SSH 在 Mac 上不采用服务器特定的端口配置

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

知道哪里出了问题吗?

答案1

除了 Michael Hampton 指出的问题之外,当配置文件中有多个适用于同一参数的声明时,将使用第一个声明。由于节Port 22中的声明Host *位于节Port 87111中的声明之前Host gitlab.braemer,因此该Port 22声明将始终优先。从ssh_config 手册页(强调添加):

对于每个参数,将使用第一个获得的值。配置文件包含由“主机”规范分隔的部分,该部分仅适用于与规范中给出的模式之一匹配的主机。匹配的主机名是命令行中给出的主机名。

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

因此,如果您想在某个Host *部分中包含默认参数设置,则应将其放在文件末尾。或者在这种情况下,将其保留,因为端口 22 无论如何都是默认端口。

为了完整起见,Michael Hampton 指出的问题是,要应用配置文件中的声明,必须使用节标题中的名称Host,而不是声明中的名称HostName,并且端口号最多只能到 65535。

答案2

您没有在命令中指定端口号。

您没有.ssh/config在命令中指定在文件中配置的备用主机名。

您必须至少执行其中一项。


您还需要使用有效的端口号。端口号最多只能达到 65535。

相关内容