Ssh
SSH 在 Mac 上不採用伺服器特定的埠配置
我正在嘗試使用 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。