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


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


76
2017-10-22 19:24




如果为用户生成密钥,则还必须有一种安全的方法来获取私钥,并将密码传递给用户。用户生成密钥要好得多,然后只需通过电子邮件向您发送公钥。 - Iain
但是,您不允许密码登录并不困难吗?如果我是仅密钥,并且我设置了新用户,则无法登录以设置其密钥。 - LVLAaron


答案:


你可以这样做 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将无法正常工作。


74
2017-10-22 19:35



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


SSH密钥中没有用户信息

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

无需为了为其他用户创建密钥而做任何特殊操作,只需将其放在正确的位置并设置权限即可。


108
2017-10-22 19:55



这是正确的答案。 - sebnukem
我只是测试和确认,它不仅仅是一个评论,但它可以删除,键仍然有效。我一直认为这很重要!谢谢你给出了正确的答案。像上面的评论一样,我有理由为其他用户创建密钥,但我不会说为什么,所以没有争论。 - FreeSoftwareServers


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

[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):

16
2017-10-22 19:35



为什么要指定DSA? - Ram
哎呀,习惯的力量。让我更新。 - Rilindo
你应该使用rsa(或者可能是eliptic曲线变体之一)。 dsa仅限于不安全的密钥。 rsa1是ssh1的遗留格式,任何人都不应该使用它。 - Peter Green
我的 joeuser 是服务用户,因此我无法以他们身份登录。如何允许服务用户(只是运行进程)拥有ssh密钥? - Jonathan
@JonathanLeaders您可以在成为该用户时为用户指定shell。这样的事情:````[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


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

vim /home/username/.ssh/authorized_keys

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


5
2018-01-09 23:42



链接死了...... - Nyxynyx