配置SSH公钥后仍需输入密码?Vultr VPS免密登录故障求助
解决SSH免密登录未匹配配置文件的问题
我看了你的问题描述和调试日志,核心问题很明确:当你直接用IP地址ssh root@198.13.59.103连接时,SSH没有匹配到你~/.ssh/config里的vultr Host配置块,所以它只会尝试默认的密钥文件(id_rsa、id_dsa等),而不会自动使用你指定的id_rsa_vultr密钥,这就是为什么你必须加-i参数才能成功登录。
为什么会这样?
SSH配置文件里的Host字段是用来匹配你在命令行输入的目标别名/主机名的。你配置里的Host vultr意味着:只有当你输入ssh vultr时,SSH才会加载这个块里的所有配置(包括IdentityFile ~/.ssh/id_rsa_vultr)。而你直接输入IP地址的话,SSH找不到对应的Host条目,就会走默认逻辑。
解决方法(任选其一即可)
方法1:使用配置里的Host别名连接
最简单的方式就是直接用你定义的别名连接:
ssh vultr
这样SSH会自动读取vultr Host块的配置,使用root用户、指定的IP和id_rsa_vultr密钥,无需额外参数。
方法2:修改SSH配置,让IP也匹配到vultr块
如果你习惯用IP地址连接,可以修改Host字段,让它同时匹配别名和IP:
Host vultr 198.13.59.103 HostName 198.13.59.103 Port 22 User root IdentityFile ~/.ssh/id_rsa_vultr
这样不管你输入ssh vultr还是ssh root@198.13.59.103,SSH都会加载这个配置块,自动使用正确的密钥。
方法3:临时指定配置文件和Host(不推荐,较繁琐)
如果你不想修改配置,也可以在命令行强制指定使用vultr的配置:
ssh -F ~/.ssh/config vultr
验证配置是否生效
你可以用ssh -G命令查看SSH会使用的配置参数,比如:
# 查看用IP连接时的配置 ssh -G root@198.13.59.103 | grep identityfile # 查看用vultr别名连接时的配置 ssh -G vultr | grep identityfile
对比两者的输出,就能确认配置是否正确匹配。
内容的提问来源于stack exchange,提问作者gy134340
相关产品推荐
相关产品推荐

