谢谢你的关注!我需要帮助解决一个问题,我确信这个问题微不足道,但它让我很困惑 :-(。
首先我想说
- 我并不是想建立基于公钥/私钥信任的无密码身份验证。
- 这是我的家庭网络,由 5 个 ubuntu 盒子组成,我在连接它们时遇到了同样的问题。
问题如下:最近,我对我的网络做了一些更改 - 将旧的 wifi 路由器换成了新的基于网状网络的路由器,添加了另一个网络交换机,还将一些盒子从旧版本升级到最新的 LTS ubuntu 版本 18.04。在此升级之前,我通常使用主机名/密码从一个盒子 ssh 到另一个盒子进行连接并进行日常维护。但是当我今天坐下来做这件事时(在完成上述所有升级之后的第一次),我遇到了问题。最初,它向我发出了有关“中间人攻击”的警告,这是我在路由器和交换机更改时预料到的。但是在做了
ssh-keygen -f "/home/machineA/.ssh/known_hosts" -R machineB
当我尝试通过 ssh 进入 machineB 时仍然看到此消息
me@machineA:~/.ssh$ ssh myson@machineB Permission denied (publickey).
我到目前为止尝试过的方法:我修改了 /etc/ssh/sshd_config,并
- PermitRootLogin prohibit-password to PermitRootLogin yes - PasswordAuthentication no to PasswordAuthentication yes
在 machineA 和 machineB 上进行了更改,没有变化。我还查看了 .ssh 目录及其内容的规定权限,它们对我来说看起来没问题。作为参考,在 machineA 上,它们是
drwx------ 2 me me 4096 Jan 2 19:23 .ssh
和
-rw-r--r-- 1 me me 403 Oct 3 2018 id_rsa.pub -rw------- 1 me me 1675 Oct 3 2018 id_rsa -rw------- 1 me me 4833 Jan 2 18:56 known_hosts.old -rw------- 1 me me 4833 Jan 2 19:23 known_hosts
在机器B上,它们是
drwx------ 2 myson myson 4096 Jan 2 20:13 .ssh
和
myson@machineB:~/.ssh$ ls -lrt total 4 -rw-r--r-- 1 myson myson 444 Jan 2 20:17 known_hosts
请注意,machineB 中缺少 id_rsa* 文件,但我认为这是正常的。
最后,当我尝试从 machineB ssh 到 machineA 时,遇到了同样的错误。
myson@machineB:~/.ssh$ ssh me@machineA Permission denied (publickey).
如果调试此问题需要任何其他信息,请告诉我,我很乐意提供。
再次感谢您的帮助!
答案1
因此,如果我理解正确的话,您已经ssh-keygen
在所有 5 台机器上运行了该命令,那么它们都应该具有id_rsa
并id_rsa.pub
位于当前用户的.ssh
文件夹中(ls ~/.ssh/
)。
-rw-r--r-- 1 me me 403 Oct 3 2018 id_rsa.pub
-rw------- 1 me me 1675 Oct 3 2018 id_rsa
这意味着你已经创建了私钥/公钥对对于该用户id_rsa.pub
,从这一点来看,最简单的事情就是从每台机器上的文件中收集公钥并创建一个单独的authorized_keys
文件。
一旦文件填充了所有 5 个公钥,每行一个键(确保没有换行符)然后将文件放入用户文件夹authorized_keys
中。.ssh
这就是 SSH 与 SSHKey 协同工作的方法,示例:
注意authorized_keys
文件夹的权限,这很重要。下面是我目前能找到的比较简单的文章,介绍了这些步骤。
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-1604
PS:文章是16.04,但它仍然适用于您的18.04。