SSH 连接权限被拒绝

SSH 连接权限被拒绝

我尝试使用 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 连接:

  1. 生成一个新的ssh密钥对(只需按 Enter 直到返回 shell):

    localhost$ (cd .ssh && ssh-keygen -t rsa -f id_rsa_2)
    localhost$ cp .ssh/id_rsa_2.pub .ssh/authorized_keys
    
  2. 将新创建的公钥复制到远程机器:

    localhost$ (cd .ssh && ssh-copy-id -i id_rsa_2 username@myIP)
    username@myIP password:
    
  3. 现在尝试登录(不会出现密码提示):

    ssh username@myIP
    

注意:我从不编辑ssh_configsshd_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 正在做什么/尝试做什么的更详细输出。

相关内容