SSH别名提示密码验证,但直接SSH工作


1

我正在尝试通过SSH连接到运行sshd的服务器(让我们称之为@ 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

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

UPDATE

所以我认为,由于登录工作没有-i ~/.ssh/id_rsa.pub选项我也可以尝试没有的主机IndentityFile ~/.rsa/id_rsa.pub所以我从配置文件中取出该行,这一切都有效。我不知道为什么。有人在乎解释这个吗?

Answers:


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

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

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


0

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

其次,如果指定命令行选项,SSH具有令人难以置信的详细调试模式:-v -v -v

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

这应该告诉你双方究竟发生了什么,并解释任何奇怪的行为。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.