SSH 别名提示密码验证,但直接 SSH 有效

SSH 别名提示密码验证,但直接 SSH 有效

我正在尝试通过 SSH 连接到运行 sshd 的服务器(我们将其称为 me@server)。我使用 创建ssh-keygen -t rsa密钥来设置 ssh 密钥,然后运行cat ~/.rsa/id_rsa.pub | ssh user@server 'cat >> ~/.ssh/authorized_keys'​​。现在,当我运行时,ssh user@server我可以毫无问题地连接到服务器。但是当我使用别名时,系统ssh server会提示我输入密钥的密码(它没有密码),最终输入user@server的密码(这是我首先试图避免的。

这是我.ssh/config在本地机器上的情况:

Host server
    HostName my_ip
    User user
    IdentityFile ~/.ssh/id_rsa.pub

我检查了本地和远程计算机上的所有文件/目录权限,它们似乎都是正确的。有人知道发生了什么吗?

更新

所以我想既然登录在没有该-i ~/.ssh/id_rsa.pub选项的情况下也能正常工作,那我不妨试试没有该选项的主机,IndentityFile ~/.rsa/id_rsa.pub所以我从配置文件中删除了该行,一切正常。我不知道为什么。有人愿意解释一下吗?

答案1

IdentityFile ~/.ssh/id_rsa.pub
-i ~/.ssh/id_rsa.pub

您在这里指定公钥。您应该指定私钥。私钥可能名为~/.ssh/id_rsa

~/.ssh/id_rsa恰好是要ssh查找的默认密钥文件名之一。当您从命令中删除错误的密钥文件规范时,ssh可能会回退到查找其默认密钥,并用于id_rsa会话。

答案2

首先,您确定它要求输入密钥文件的密码而不是远程服务器密码吗?

其次,如果您指定命令行选项,SSH 会有一个非常详细的调试模式:-v -v -v

您可以在服务器上执行相同操作:-d -d -d

这应该能准确地告诉你双方到底发生了什么,并解释任何奇怪的行为。

如果我不得不猜测,我怀疑 SSH 客户端正在解析不同的私钥,然后由于某种原因强制提示,但调试输出是找出答案的方法。

如果我有 4 个不同的私钥,我会将它们全部列为 IdentityFile 条目。这应该可以解决这个问题 - 如果它确实替换了一个意外的密钥。

相关内容