在通过用户和根帐户的 SSH 配置来访问一组 VM 和硬件服务器时,我遇到了从公钥/私钥关系的角度来看对我没有多大意义的情况。
推荐的步骤似乎如下:
ssh user@vm1
生产The authenticity of host 10.1.10.9 can't be established. Are you sure you want to connect?
选择yes
会将 vm1 的机器密钥的指纹放入您的~/.ssh/known_hosts
文件中。
ssh user@vm1
返回Permission denied
(公钥,gssapi,...)
ssh-keygen
~/.ssh/id_rsa
为登录用户 ('user')和生成本地密钥对id_rsa.pub
。这两个都标有用户的机器身份:[email protected]
.
下一步的一个版本是:ssh-copy-id [-i ~/.ssh/id_rsa.pub] user@vm1
这通常会失败,因为PasswordAuthentication
设置为并且必须进行no
带外修改。/etc/ssh/sshd_config
然后ssh-copy-id
可以将'用户的公钥复制到~/.ssh/_authorizedkeys
vm1的文件中。
成功的结果ssh-copy-id
识别公共文件的(本地)源和添加到远程 (1) 的密钥的计数。
此时PasswordAuthentication
可以设置回no
。
现在,用户的~./ssh/authorized_keys
文件包含一个带有用户名和机器 ID 标记的键。
所以现在让我们为另一个用户设置一个 ssh 登录,比如 root:
仍以用户身份登录,
ssh-copy-id root@vm1
(跳过密码验证步骤...)成功,将 [user] 的公钥复制到authorized_keys
vm1 根~/.ssh/
文件夹中的文件中。密钥仍然用 [user] 的名称和机器标记。
虽然这个操作可能看起来明显有缺陷,或者可能没有......如果你在 MAC 上,这样的东西是唯一的选择,因为 MAC 没有根用户~/.ssh/
文件夹。
在我看来,这样做的结果是任何其他机器上的任何用户都可以为他们拥有 root 密码的任何机器创建一个 ssh root 登录帐户。authorized_keys
他们可以根据存储在目标系统根文件夹文件中的[user] 帐户公钥在该计算机上以 root 身份登录~/.ssh/
。
对我来说,这似乎削弱了目标机器上的 root 访问保护,因为用户的公钥验证了登录权限,但目标 root 对应的私钥没有存储在~/.ssh/
源机器上的受限 root 帐户文件夹中。
我错过了什么吗?