权限被拒绝(公钥)。禁用 PasswordAuthentication 时

Permission denied (publickey). when disabling PasswordAuthentication

我有2台机器:

两台计算机都在同一个网络


在Ubuntu电脑上,我做了什么:


在WSL上,我做了什么:

ssh -i key test-user@XXX.XXX.XXX.XXX

这很好用,但它也问我用户的密码。

hamuto@DESKTOP-HLSFHPR:~$ ssh -i key test-user@XXX.XXX.XXX.XXX
test-user@XXX.XXX.XXX.XXX's password:

这个东西的问题是,Github Actions,我无法输入密码。
所以我更改了服务器中的文件/etc/ssh/sshd_config

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no <-- I've changed that to no, and uncomment the line
#PermitEmptyPasswords no  

当我重新尝试连接 ssh 时:

hamuto@DESKTOP-HLSFHPR:~$ ssh -i key test-user@XXX.XXX.XXX.XXX
test-user@XXX.XXX.XXX.XXX: Permission denied (publickey).

这是为什么?

经过几天的研究,我找到了解决方案:

  • 首先,我需要了解您只需要在 Ubuntu 服务器上生成的一对密钥。
  • 在服务器中,您必须将id_rsa.pub复制到~/.ssh/authorized_keys
  • 正确设置权限:
chown -R username:username /home/username/.ssh
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/authorized_keys
  • 将文件/etc/ssh/sshd_configPubkeyAuthentication的值改为yes,并取消注释。
  • 将私钥 id_rsa 复制到客户端。将权限设置为 600.

您可以连接到服务器:

ssh -i ~/.ssh/id_rsa test-user@XXX.XXX.XX.XX

现在可以了。