我当前的 .ssh/config 文件具有以下配置。
Host *
FingerprintHash sha256
StrictHostKeyChecking yes
PasswordAuthentication no
GSSApiAuthentication no
KbdInteractiveAuthentication no
CheckHostIP yes
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
Port 28282
我想添加另一条仅适用于一个主机 ip(1.2.3.4) 的规则。
所以,我在 .ssh/config 文件中添加了以下规则。
Host 1.2.3.4
Hostname 1.2.3.4
Port 22
但是第一个更广泛的规则一直影响到 1.2.3.4 规则。
我只想使用默认设置(例如使用密码登录(不受 * 规则影响))来 ssh 到 1.2.3.4。
当我运行时ssh -v [email protected]
,它显示下面的消息(看起来 * 规则已应用)。并继续尝试通过端口 28282。
debug1: /home/ryan/.ssh/config line 23: Applying options for *
debug1: /home/ryan/.ssh/config line 74: Applying options for 1.2.3.4
..
debug1: Connecting to 1.2.3.4 [1.2.3.4] port 28282.
debug1: connect to address 1.2.3.4 port 28282: Connection refused
我需要更改什么才能使用密码和端口 22 登录到 1.2.3.4?
提前致谢。
我想你有错误的顺序组。从文档( )中根本不清楚,
man ssh_config
但是,“对于每个参数,将使用第一个获得的值。 ”,因此更一般的匹配需要在配置文件的下方。将它们按以下顺序排列:
或者将
Host *
设置移到块之外并使其成为全局。然后你可以用你的Host 1.2.3.4
块等覆盖这些。但是,使用特殊情况枚举主机集可能更有意义,无论是按名称还是作为模式。然后使用端口 22 的默认操作将继续适用于所有系统。