在 Mac OS X 中配置 SSH 客户端使用不同端口

eli*_*lon 1 ssh port osx-mountain-lion

我有一个.ssh/config配置为使用 SSH 连接到不同服务器的文件:

###
# Identity files
###
IdentityFile ~/.ssh/id_dsa_home
IdentityFile ~/.ssh/id_dsa_github
IdentityFile ~/.ssh/id_rsa_bitbucket

###
# Global options
###
PasswordAuthentication no
PubkeyAuthentication yes

Host *
  Port 22

Host icarus
  User elitalon
  HostName 192.168.1.1
  Port 54301

Host zeus
  User elitalon
  HostName 192.168.2.1
  Port 54302

Host github
  User git
  HostName github.com

Host bitbucket
  User git
  HostName bitbucket.org
Run Code Online (Sandbox Code Playgroud)

这个配置过去工作得很好。但是,由于我升级到 Mac OS X Mountain Lion,SSH 对于条目Port中的特定值的行为有所不同Host

  1. 如果我尝试连接到zeusSSH,则始终使用端口 22,而不是 54301。
  2. 如果我删除Port 22并尝试连接到Host没有Port条目的设备,SSH 将使用第一个Port值集(本例中为 54301)。

尝试不同的组合后,SSH 似乎处理了所有配置文件,但只采用Port指定的第一个值,根据手册页,这是预期的行为:

对于每个参数,将使用第一个获得的值

但手册页还指出

配置文件包含由“主机”规范分隔的部分,并且该部分仅适用于与规范中给出的模式之一匹配的主机。

所以我认为,通过不指定任何Port值,默认端口只会实际具有值的那些部分中更改Port

Host那么,除非指定了另一个值,否则如何设置条目以使用端口 22?

谢谢!

Red*_*ick 6

由于使用每个参数的第一个获得的值,因此应在文件开头附近给出更多特定于主机的声明,并在末尾给出一般默认值。

所以

Host *
  Port 22
Run Code Online (Sandbox Code Playgroud)

应该移到最后。