生成 SSH 密钥时,我cat
在文件上使用了命令id_rsa.pub
,并注意到我帐户的主机名/用户名位于文件中。为什么会有这个?如果我将其复制到服务器上,那么它不在这里或作为服务器的主机名/用户名是否有意义?以及用于 SSH 的用户名?我这一切都错了吗?我的流程是这样的:
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-keygen
然后我将生成的内容写入id_rsa.pub
到authorized_keys
我通过将密钥复制到服务器来完成。
答案1
ssh 公钥中的最后一个字段是注释。默认情况下,当生成密钥作为提醒时,它会使用 user@host 值进行初始化。您可以选择编辑它,它不会改变密钥。此注释不会影响任何身份验证,它只是在这里帮助管理多个条目。
远程服务器上公钥的位置会影响它:它将允许访问其~/.ssh/authorized_keys
文件中放置的帐户。只有拥有私钥才允许访问远程帐户。从服务器的角度来看,不存在哪个用户访问该帐户的概念:唯一相关的是只能从拥有私钥的实体成功建立 SSH 连接(使用 ssh 密钥)。如果这个私钥被复制到其他地方(或被盗),那也不会产生什么影响。如果您需要从不同的用户和/或系统通过 ssh 密钥访问此帐户,请不要复制私钥,只需为每个不同的位置生成一个私钥并将其添加到文件中authorized_keys
,这样会更好的安全卫生。
您的方法看起来不错(您可能也必须这样做chmod 700 ~/.ssh
),但是如果您还具有对远程帐户的常用密码访问权限,则复制 ssh 密钥的最简单方法是使用ssh-copy-id
命令。例如将默认密钥复制到远程用户帐户于远程服务器:
ssh-copy-id remoteuser@remoteserver
这将自动将密钥添加到远程帐户的authorized_keys
文件中(如果不存在,则使用正确的访问权限创建它)。