![ssh 客户端的不同配置取决于 IP 地址或主机名](https://linux22.com/image/33534/ssh%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%9A%84%E4%B8%8D%E5%90%8C%E9%85%8D%E7%BD%AE%E5%8F%96%E5%86%B3%E4%BA%8E%20IP%20%E5%9C%B0%E5%9D%80%E6%88%96%E4%B8%BB%E6%9C%BA%E5%90%8D.png)
我的 ~/.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 代理,只需更改您的私钥名称即可