是的,我知道这是一个 Ubuntu 论坛。首先感谢您所做的一切并帮助别人!
好吧,我一直在尝试在我的 Ubuntu 20.04 上设置 SSH 密钥,在线阅读有关它的内容。所以我用 在 ubuntu 上生成了密钥ssh-keygen -t rsa
。现在我只希望我的 Windows PC 通过 Windows Powershell 连接到它(显然不需要启用密码)。
因此,我将我的公钥文件复制到我的 Windows 电脑并将其输入,C:\Users\Username\.ssh\
但不知何故,在连接时我收到Error Permission denied (publickey)
错误。
因此,据称网上的一些“聪明”人都建议添加此设置PasswordAuthentication yes
,/etc/ssh/sshd_config
但这是否违背了专门使用 SSH 密钥连接到服务器的目的?
所以如果我猜测这一定是一个目录权限问题,但我不知道在 Ubuntu 和 Windows 上哪些目录需要什么权限。
我已经摆弄这个问题很长一段时间了,但是反复试验需要花费太多时间,而我却没有足够的时间,所以如果有人可以提供他们来之不易的经验,那就太好了。
提前感谢兄弟们!让社区继续活跃起来。
格茨
墨西哥菜
答案1
好吧,正如@muru 所说,这样做:
ssh-keygen -t rsa
在远程(连接到服务器的设备)上执行并使用密码- 查找
id_rsa.pub
文件C:\Users\Username\.ssh\
- 使用 ftp 将其上传到您的服务器(或上传到网络服务器并使用 wget)
- 保存在
~/.ssh
- 确保文件名为 authorized_keys,否则它将无法工作
sudo cp id_rsa.pub authorized_keys
- 删除下载的未使用文件
sudo rm id_rsa.pub
- 禁用密码登录
sudo nano /etc/ssh/sshd_config
- 查找或添加行
PasswordAuthentication no
- 重启 ssh 服务
sudo service sshd restart
- 使用 Powershell 连接
ssh [email protected]
- powershell 中 ssh 命令的可选参数是自定义端口
-p [port]
和调试信息使用-vvv
- 我添加的一些其他可选安全设置
/etc/ssh/sshd_config
包括:
Port [port]
Protocol 2
LogLevel VERBOSE
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
IgnoreRhosts yes
RhostsAuthentication no
RhostsRSAAuthentication no
PermitEmptyPasswords no
PasswordAuthentication no
ClientAliveInterval 300
ClientAliveCountMax 0
AllowTcpForwarding no
X11Forwarding no
UseDNS no