你如何为另一个用户创建一个 ssh 密钥?

use*_*449 116 linux ssh centos ssh-keys

我正在尝试为另一个用户创建一个 ssh 密钥。我以 root 身份登录。我可以只编辑 ssh-keygen 生成的文件并将 root 更改为我想要的用户吗?

小智 178

在SSH密钥没有用户信息

公钥中的最后一个字段是注释(可以通过运行以下命令进行更改ssh-keygen -C newcomment)。

无需做任何特殊的事情来为其他用户制作密钥,只需将其放在正确的位置并设置权限即可。

  • 这就是正确答案。 (9认同)
  • 我刚刚测试并确认,它不仅是一个注释,而且可以删除并且按键仍然有效。我一直认为这很重要!感谢您给出正确答案。就像上面的评论一样,我有一个为其他用户创建密钥的原因,但我不会说为什么,所以没有争论。 (3认同)
  • 公钥中的这个用户名让我认为用户名被编码到公钥中,如果更改用户名,公钥将无效。多谢。 (3认同)

小智 88

您可以使用 来做到这一点ssh-keygen,但是请记住,私钥对用户来说是私有的,因此您应该非常小心地确保它的安全——与用户的密码一样安全。或者甚至更安全,因为用户在第一次登录时不太可能需要更改它。

ssh-keygen -f anything在当前目录中创建两个文件。anything.pub是公钥,您可以将其附加到~/.ssh/authorized_keys任何目标服务器上的用户。

刚刚调用的另一个文件anything是私钥,因此应该为用户安全地存储。默认位置将是~username/.ssh/id_rsa(此处命名id_rsa为 rsa 密钥的默认位置)。请记住,.ssh目录不能被用户以外的任何人读取或写入,用户的主目录不能被用户以外的任何人写入。同样,对私钥的权限也必须严格:仅对用户进行读/写,并且 .ssh 目录和私钥文件必须归用户所有。

从技术上讲,您可以将密钥存储在任何地方。有了ssh -i path/to/privatekey你可以指定位置,而连接。同样,正确的所有权和权限至关重要,如果您没有正确的权限,ssh 将无法工作。

  • 您假设用户是真人。如果登录是用于执行实用程序任务(例如在远程服务器上运行缅因脚本)的非交互式用户,那么是的,您可能会手动为该用户生成密钥。当然,这有其自身的安全隐患,但那是另一回事。 (54认同)
  • 我不喜欢那种说“你不应该那样做”但不回答问题的答案。虽然这对于原始问题的上下文可能是正确的和有帮助的,但其他人可能在不同的情况下有相同的问题。“永远不应该为其他用户生成 ssh 密钥”:在简单的情况下确实如此。但是,例如,请考虑同一自然人的多个身份。多个系统上可能有多个帐户,并非所有帐户都允许您生成密钥或允许适当地保护私钥。 (13认同)
  • +1 表示它是私钥(!) (6认同)
  • @Rilindo `ssh -i` 到非特权进程的私钥是我处理多个自动 rsync 备份进程的方式。:) (2认同)

Ril*_*ndo 22

使用su成为用户并以该用户身份运行密钥:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):
Run Code Online (Sandbox Code Playgroud)

  • 您应该使用 rsa (或可能是椭圆曲线变体之一)。dsa 仅限于不安全的密钥大小。rsa1 是 ssh1 的遗留格式,没有人应该再使用了。 (5认同)

小智 7

正如所看到的在这里,你可以使用chmod更改您要添加SSH密钥对用户的文件夹的读取权限。

vim /home/username/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

然后,只需将密钥粘贴到该文件底部的新行