我正在尝试从 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。