当源是 MAC 时,远程 root 用户的正常 SSH 设置操作失败

当源是 MAC 时,远程 root 用户的正常 SSH 设置操作失败

这是关于 Centos7、SSH 远程登录设置以及 Mac 没有 root 用户的事实。

我已经问过这个问题好几次了,并得到了有关 ssh 工作原理的解释。其中一些很有趣。

目标是在 centos7 机器上以 root 用户进行无密码 ssh 登录。

我可以为非 root 用户执行正常设置,如下所示:

  1. 删除我的 ~/.ssh 文件夹。
  2. ssh-keygen(接受默认值以创建 ~/.ssh/id_rsa 私钥/公钥)。
  3. ssh-copy-id myuser@server (将公钥放入远程计算机上的authorized_keys 文件中)。
  4. 修改 sshd_config 以允许 Root 登录(是)、PublicKeyAuthentication(是)和 PasswordAuthorization(否)。
  5. 重新启动 sshd 并检查 sshd 上的状态。
  6. ssh myuser@server 无密码(使用密钥)成功

然后我尝试对 root 用户执行相同的操作:

  1. ssh-keygen -f root-key (将新的私钥和公钥放在 ~/.ssh/root-key 和 root-key.pub 中。-- 在 myuser ssh 文件夹中。)
  2. ssh-copy-id -i ~/.ssh/root-key root@server (此操作成功,我可以在远程服务器的根 ~/.ssh/authorized_keys 文件中找到公钥。)
  3. 因为我已经将 PasswordAuthentication 更改为 no,将 PublicKeyAuthentication 更改为 yes,所以无需密码即可工作: ssh -i ~/.ssh/root-key root@server
  4. 但是,这应该可以工作,但不能: ssh root@server 它会产生“权限错误(公共密钥)”。

在 mulberry 上进行了几周的研究后,我知道对 sshd_config 的任何更改都不会产生任何影响(我已经尝试了所有排列)。

看起来确实如此,将密钥复制到 root@server 的 ~/.ssh 文件夹的authorized_keys 文件不足以启用正常的无密码身份验证。

SSH 过程如下所示:流程描述和图表表明问题发生在“向服务器验证用户阶段”,此时客户端应将“root”公钥发送到服务器,以便与服务器根的authorized_keys 文件的内容进行比较。

事实上,有效的 CLI 语法似乎包含“-i ~/.ssh/root-key”短语,该短语显式转发 ssh-copy-id 步骤复制到服务器根的authorized_keys 文件的特定公钥。

但“正常”ssh 表示“ssh root@server”足以启动密钥传输和比较过程。

现在......在我之前的问题中,许多响应者想强调SSH“不关心”远程用户名是否与本地用户名不同,并且无论用户名、帐户如何,所有操作都会“正常”进行,等等。

但是,正如我在这些问题中试图指出的那样,根的公钥位于未命名为“root”的文件夹中,因此密钥的用户名字段不匹配,一些类似的“哑”妨碍的东西。

我最好的猜测是,SSH 的代码,至少在 MAC 上(尽管我在 Centos7 虚拟机上也遇到了同样的问题)默认使用首选 id_rsa.pub 密钥作为发送到远程服务器以匹配的密钥使用远程服务器的authorized_keys 文件中存在的ssh-copy-id'd root-key.pub。

所以...事实上,SSH 将允许名为“me”的本地用户连接到名为“you”的远程用户,这一事实实际上与问题或可能的解决方案无关。

现在的障碍是我正在尝试设置 TripleO 控制器来部署为 OpenStack 的 UnderCloud。 Ansible 脚本对于远程“root”和“stack”用户在 Ansible 角色运行期间拥有的权限非常特殊。他们不想在脚本化命令行上处理任何额外的参数,例如“-i ~/.ssh/root-key”。

所以这确实阻碍了我的进步。因此,欢迎任何有经验的帮助!

相关内容