Ssh

SSH 在 Mac 上不採用伺服器特定的埠配置

  • October 1, 2020

我正在嘗試使用 Mac 的非標準埠連接到 GitLab 實例。我研究了 .ssh/config 文件並嘗試了不同的選項,我認為我的配置還可以,但 ssh 仍然使用埠 22。

ssh -vv gitlab.braemer.myds.me
OpenSSH_7.9p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/andrey/.ssh/config
debug1: /Users/andrey/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Connecting to gitlab.braemer.myds.me port 22.
ssh: connect to host gitlab.braemer.myds.me port 22: Connection refused

配置在這裡:

cat ~/.ssh/config
Host *
 Port 22

Host github.com-irondad
 HostName github.com
 User git
 IdentityFile ~/.ssh/id_rsa_2
 IdentitiesOnly yes

Host gitlab.braemer
 HostName gitlab.braemer.myds.me
 User git 
 IdentityFile ~/.ssh/id_rsa
 IdentitiesOnly yes
 Port 87111

有什麼想法有什麼問題嗎?

除了 Michael Hampton 指出的問題,當配置文件對同一個參數有多個適用的聲明時,使用第一個。由於節中的聲明在Port 22節中的聲明Host *之前,因此聲明將始終優先。從ssh_config 手冊頁(強調添加):Port 87111``Host gitlab.braemer``Port 22

對於每個參數,將使用第一個獲得的值。配置文件包含由“主機”規範分隔的部分,該部分僅適用於與規範中給出的模式之一匹配的主機。匹配的主機名是命令行中給出的主機名。

由於使用了每個參數的第一個獲得值,因此應在文件開頭附近給出更多特定於主機的聲明,並在末尾給出一般預設值

所以如果你想在一個Host *部分中包含預設參數設置,你應該把它放在文件的末尾。或者在這種情況下,只需將其關閉,因為埠 22 無論如何都是預設埠。

為了完整起見,Michael Hampton 指出的問題是,要應用配置文件中的聲明,您必須使用Host節標題中的名稱,而不是HostName聲明中的名稱,並且埠號只能達到 65535。

引用自:https://serverfault.com/questions/1036027