我尝试使用 ssh 无需密码登录远程服务器,但出现错误:
Permission denied (public key)
要将密钥复制.pub
到服务器,我必须:
PasswordAuthentication = yes (in the sshd_config file).
复制.pub
密钥后,我禁用了密码ssh_config
:
PasswordAuthentication = no
现在当我尝试 ssh 时:
ssh '[email protected]'
我收到了错误:
Permission denied (public key)
我该如何解决这个问题?
我更改了authorized_keys权限,.ssh/
权限等等,但问题仍然存在。我甚至使用了命令ssh-agent $SHELL && ssh-add
。
答案1
我总是使用以下步骤创建与远程机器的新 ssh 连接:
生成一个新的
ssh
密钥对(只需按 Enter 直到返回 shell):localhost$ (cd .ssh && ssh-keygen -t rsa -f id_rsa_2) localhost$ cp .ssh/id_rsa_2.pub .ssh/authorized_keys
将新创建的公钥复制到远程机器:
localhost$ (cd .ssh && ssh-copy-id -i id_rsa_2 username@myIP) username@myIP password:
现在尝试登录(不会出现密码提示):
ssh username@myIP
注意:我从不编辑
ssh_config
,sshd_config
所以也许您可以将它们恢复到原始状态,除非它们已经连接。
答案2
当您看到此错误时:
权限被拒绝(公钥)
这意味着你使用的密钥有问题。这并不一定意味着您正在使用无效的密钥。问题也可能是服务器无法验证您的密钥。
.ssh
通常情况下,文件夹或文件的所有权或权限错误authorized_keys
是导致有效密钥不被接受的原因。请检查以下内容:
- 该
/home/<user>/.ssh
文件夹是否归 拥有<user>
? - 该文件夹是否仅对用户具有权限(chmod 0700)?
- 该
/home/<user>/.ssh/authorized_keys
文件是否归 拥有<user>
? - 该文件是否仅具有(chmod 0600)
/home/<user>/.ssh/authorized_keys
的权限?<user>
以下命令应确保(以特定用户身份运行时):
chown -R $USER ~/.ssh
chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys
如果这仍然没有帮助,还可以检查日志文件以获取有关可能出现问题的更多线索。在 SSH 客户端上启用详细日志记录也可以提供有用的线索,只需:
ssh <IP> -l <user> -vvv
获取有关 SSH 正在做什么/尝试做什么的更详细输出。