权限被拒绝(公钥)。禁用 PasswordAuthentication 时
Permission denied (publickey). when disabling PasswordAuthentication
我有2台机器:
- Windows 安装了
WSL
的机器,用作 客户端 .
- Ubuntu 机器,有
test-user
个用户,充当 服务器。
两台计算机都在同一个网络。
在Ubuntu电脑上,我做了什么:
- 我用
ssh-keygen
生成了两个密钥,我把id_rsa文件复制到WSL
.
- 确保 ssh 服务已启动,
systemctl status ssh
。
在WSL上,我做了什么:
- 已将 id_rsa 文件复制为 key.
- 已将 key 文件的权限更改为
chmod 600 key
。
- 连接到服务器机器:
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_config
中PubkeyAuthentication
的值改为yes,并取消注释。
- 将私钥
id_rsa
复制到客户端。将权限设置为 600
.
您可以连接到服务器:
ssh -i ~/.ssh/id_rsa test-user@XXX.XXX.XX.XX
现在可以了。
我有2台机器:
- Windows 安装了
WSL
的机器,用作 客户端 . - Ubuntu 机器,有
test-user
个用户,充当 服务器。
两台计算机都在同一个网络。
在Ubuntu电脑上,我做了什么:
- 我用
ssh-keygen
生成了两个密钥,我把id_rsa文件复制到WSL
. - 确保 ssh 服务已启动,
systemctl status ssh
。
在WSL上,我做了什么:
- 已将 id_rsa 文件复制为 key.
- 已将 key 文件的权限更改为
chmod 600 key
。 - 连接到服务器机器:
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_config
中PubkeyAuthentication
的值改为yes,并取消注释。 - 将私钥
id_rsa
复制到客户端。将权限设置为600
.
您可以连接到服务器:
ssh -i ~/.ssh/id_rsa test-user@XXX.XXX.XX.XX
现在可以了。