如何为其他用户创建ssh密钥?


89

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


5
如果为用户生成密钥,则还必须具有一种获取私钥的安全方法,并且该私钥是用户的密码。更好的是,用户生成密钥,然后仅通过电子邮件将公共密钥发送给您。
user9517 2011年

但是您不允许密码登录不是很困难吗?如果我仅使用密钥,并且设置了新用户,则他们将无法登录以设置其密钥。
LVLAaron 2013年

Answers:


79

您可以使用来做到这一点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将无法正常工作。


4
+1表示这是一个私钥(!)
mailq

51
您假设用户是真实的人。如果登录名是用于执行实用程序任务的非交互式用户(例如,在远程服务器上运行正在运行的维护脚本),则可以,您可能会手动为该用户生成密钥。当然,这有其自身的安全隐患,但这是另一回事。
Rilindo 2011年

2
@Rilindo ssh -i对非特权进程的私钥是我处理多个自动化rsync备份进程的方式。:)
Shadur 2011年

9
我不喜欢那种说“你不应该那样做”的答案,但不要回答这个问题。尽管这对于原始问题的上下文可能是正确的且有帮助的,但其他人可能在不同情况下遇到相同的问题。“绝不应该为另一个用户生成ssh密钥”:在简单情况下就是如此。但是,请考虑例如同一自然人的多个身份。在多个系统上可能有多个帐户,但并非所有帐户都允许您生成密钥或适当地保护私钥。
古斯塔夫2015年

usersuser's
用户

135

在SSH密钥没有用户信息

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

无需执行任何特殊操作即可为另一个用户创建密钥,只需将其放在正确的位置并设置权限即可。


5
那是正确的答案。
塞布诺肯

1
我只是测试并确认,不仅只是评论,还可以将其删除并且按键仍然起作用。我一直认为这很重要!感谢您提供正确的答案。像上面的评论一样,我有理由为其他用户创建密钥,但是我不会说原因,因此没有论据。
FreeSoftwareServers

18

使用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):

为什么要指定DSA?
公羊

哎呀,习惯的力量。让我更新。
Rilindo 2011年

4
您应该使用rsa(或可能是椭圆曲线变体之一)。dsa限于不安全的密钥大小。rsa1是ssh1的旧格式,现在不再应该使用。
彼得·格林

joeuser是服务用户,因此我无法以他们身份登录。如何允许服务用户(仅运行进程)拥有ssh密钥?
乔纳森

@JonathanLeaders您将在成为该用户时为该用户指定外壳。像这样的东西:```[root @ ip-10-254-41-211〜]#grep ftp / etc / passwd ftp:x:14:50:FTP用户:/ var / ftp:/ sbin / nologin [root @ ip-10-254-41-211〜]#su-ftp su:警告:无法将目录更改为/ var / ftp:无此文件或目录此帐户当前不可用。[root @ ip-10-254-41-211〜]#su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $```
Rilindo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.