ssh 客户端的不同配置取决于 IP 地址或主机名

ssh 客户端的不同配置取决于 IP 地址或主机名

我的 ~/.ssh/config 目录中有这个:

Host 12.34.56.78
    IdentityFile ~/.ssh/my_identity_file

当我 ssh 到 12.34.56.78 时,一切正常。系统要求我提供“my_identity_file”的密码,我可以连接到服务器。

然而,有时我也想通过 ssh 连接到另一台服务器。但无论服务器如何,如果我这样做:

ssh [email protected]

我还被要求提供“my_identity_file”的密码(即使服务器有不同的 IP 地址)。这非常烦人,因为我没有在所有服务器上设置该文件的公钥。我想使用密码连接到另一台服务器(旧的共享托管帐户),但现在不能。

如何设法仅对一台服务器使用密钥身份验证,并在 ~/.ssh/config 中未列出的服务器默认情况下继续使用密码?

答案1

配置文件中的主机实际上是您要标识服务器的短名称。您需要使用主机名来通过主机名或IP进行识别。您也可以限制给定用户

尝试类似的东西

Host myhost
Hostname a.b.c.d
User myuser
Identityfile my-identity-file

这应该仅对指定的主机名使用该密钥文件,如果您不指定主机名,它也将使用该用户

答案2

您可能会发现使用“ssh-add”等工具很有用,它可以将破译的私钥保存在内存中,因此在您需要时它不会询问您的密码。

因此,当您想要 ssh 另一台主机时,

1/如果你的公钥在上面,ssh将自动对你进行身份验证

2/ 如果您的公钥不在其中,ssh 将尝试使用该密钥对您进行身份验证,将会失败,然后要求您提供密码。

但正如 Etan Reisner 所说,看起来您用默认名称调用了您的身份文件,否则 ssh 不会尝试使用它。如果您不想使用 ssh 代理,只需更改您的私钥名称即可

相关内容