我当前的 .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(不受 * 规则影响)。
当我运行时,它显示以下消息(看起来*规则已应用)。并继续尝试通过端口 28282。ssh -v [email protected]
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?
提前致谢。
答案1
我想你的组顺序是错误的。从文档中根本不清楚(man ssh_config
但是,“对于每个参数,将使用第一个获得的值。”,因此更一般的匹配需要在配置文件中进一步进行。
将它们按以下顺序排列:
Host 1.2.3.4
Port 22
Host *
FingerprintHash sha256
StrictHostKeyChecking yes
PasswordAuthentication no
GSSApiAuthentication no
KbdInteractiveAuthentication no
CheckHostIP yes
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
Port 28282
或者将Host *
设置移到块之外并使它们成为全局的。然后你可以用你的Host 1.2.3.4
块覆盖这些。
但是,通过名称或模式枚举具有特殊情况的主机集可能更有意义。然后,使用端口 22 的默认操作将继续适用于所有系统。