新编辑:
所以我回去做了一些重要的测试,并稍微修改了我对问题的看法。
首先,这里有一个完整且易于理解的 SSH 握手图的链接(以达到同一页面):SSH 密钥解释。
因此,我清理了用户的 .ssh 文件夹以及我正在使用的两台 Centos7 机器上的根目录 - 控制器是虚拟机,服务器是金属。
以下是感兴趣的 SSHD_Config 值:
#Port22, Protocol 2, PermitRootLogin yes, #StrictModes yes,
PubKeyAuthentication yes, AuthorizedKeysFile .ssh/authorized_keys,
AllowUsers root me_meaning_me, PasswordAuthentication yes (only to allow ssh-copy-id operations to start), #PasswordAuthentication no,
#ChallengeResponseAuthentication yes, ChallengeResponseAuthentication no,
ClientAliveTime 120, ClientAliveCountMax 720 for tripleo openstack timeout
UsePAM yes, GSSAPI yes
开始:任何 ~/.ssh/ 位置、me 用户、root 用户、本地或服务器中都没有文件或文件夹。
ssh me@server
- 密码已接受 - 最终状态:新本地known_hosts 中的新服务器指纹。ssh-keygen me@server
- 没有可见的结果 - 最终状态; id_rsa 私有,本地 id_rsa.pub 文件~/ssh/
。ssh-copy-id me@server
- 没有可见的结果 - 最终状态:rsa-shaw
在服务器我的~/.ssh/authorized_keys
名为me@server
.me@server
可以通过 SSH 连接到服务器,但必须提供服务器端密码。ssh-keygen -f root-key root@server
- 无可见结果 - 最终状态:本地 me 中的 root-key rsa 私钥和 root-key.pub 公钥~/.ssh/
。ssh-copy-id -i ~/.ssh/root-key.pub root@server
- 有关密钥和 root@server 的一些响应必须提供服务器端密码。- 编辑服务器端
/etc/ssh/sshd_config
- 更改为#PasswordAuthentication yes
和PasswordAuthentication no
。 ssh me@server
成功并且不需要密码。ssh root@server
因 PublicKey、GSSAPI 错误而失败。- 尝试了 - 中的许多值变化
sshd_config
,但将它们全部恢复。 - 使用 kvm 交换机登录服务器并检查 root 的
~/.ssh/authorized_keys
文件 - 文件中的单个密钥与为 me@server 生成的密钥相同。 - 他们
ssh-keygen -f root-key root@sever
生成了相同的密钥并添加了me@server
身份。 - 将
ssh-copy-id -i root-key.pub root@server
与 me@server 的密钥相同的密钥移动到根~/.ssh/authorized_keys
文件中。
现在,我对这个问题的最初名称是基于在几个小时内多次执行这些步骤,但总是得到相同的结果。
那么现在我们怎么想?
答案1
如果我正确地阅读了你的问题,你似乎陷入了这样一个事实:你的 Mac 没有与你的服务器匹配的用户名(包括 root)。
当登录或设置对服务器的访问时,您实际上不需要在客户端上使用匹配的用户名。如果您不指定用户名,那么 ssh 客户端将采用您当前的用户名,但您可以总是如果您想使用以下形式,请指定不同的用户名:user@remote_host
您提到您正在使用该ssh-copy-id
命令。在命令行上,您可以通过键入 来获取相关的用户手册页man ssh-copy-id
。作为参考,它应该向您显示以下内容:https://linux.die.net/man/1/ssh-copy-id
概要
ssh-copy-id [-i [identity_file]] [user@]machine
那是来自你的常规的Mac 上的用户可以调用:
ssh-copy-id root@remote-server
或者您可以指定要安装的公钥。例如:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@remote-host