对不同主机应用 ssh 规则

对不同主机应用 ssh 规则

我当前的 .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 的默认操作将继续适用于所有系统。

相关内容