0

我有两台机器:

  • 已安装的Windows 机器WSL,用作客户端
  • 带有test-user用户的 Ubuntu 机器,用作服务器

两台计算机在同一个网络上。


在 Ubuntu 计算机上,我做了什么:

  • 我曾经ssh-keygen生成两个密钥,我将id_rsa文件复制到WSL.
  • 确保 ssh 服务已启动,使用systemctl status ssh.

在 WSL 上,我做了什么:

  • 将id_rsa文件复制为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的密码:

这个东西的问题是,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:权限被拒绝(公钥)。

这是为什么?

4

1 回答 1

1

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

  • 首先,我需要了解您只需要一对在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
  • PubkeyAuthentication将文件中的值更改/etc/ssh/sshd_config为yes 并取消注释。
  • 将私钥复制id_rsa到客户端。将权限设置为600

您可以连接到服务器:

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

现在它起作用了。

于 2021-07-15T20:50:25.527 回答