通过ssh-copy-id为其他用户安装公钥


26

ssh-copy-id可用于将您的公共密钥安装在远程计算机的中authorized_keys。如果有sudo能力,是否可以使用同一命令来安装其他用户的公共密钥?

更新:本地和远程都使用Ubuntu 12.04。

更新2:描述创建新用户帐户和添加公钥的过程

  1. (远程)创建一个新的用户帐户,并将其设置为仅用户公共密钥访问权限。
  2. (本地)为新用户帐户生成一个公用密钥(ssh-keygen)。
  3. 通常,我要做的是.ssh/authorized_keys在远程服务器上创建目录和文件,然后将本地生成的公共密钥复制并粘贴到新用户的帐户中。我正在寻找的是,如果我可以ssh-copy-id用来将这个新创建的用户的公钥直接安装到ssh目录中。只是为了保存更多命令。

Answers:


12

不是同一命令,但是如果远程主机上有sudo,则可以使用ssh远程执行所需的步骤。我使用以下命令将ssh密钥推入树莓的root用户:

cat ~/.ssh/id_rsa.pub | \
  ssh pi@192.168.1.25 \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • 猫我的公钥
  • 用管道将其传送到ssh
  • ssh以ssh用户身份连接到我的树莓派
  • 在远程使用sudo创建/root/.ssh
  • 然后使用带有“ tee -a”的sudo将stdin(持有第一只猫的钥匙)附加到/root/.ssh/authorized_keys

只需将这些内容作为脚本放在一起,或者在远程端添加一些chmod / chown,即可满足需要。


很漂亮,感谢您对命令的分解。
布雷克·弗雷德里克

1

是:),例如,如果您以ghost @ ubuntu身份登录,并且您

ssh-copy-id root@host-ip

在主机服务器上,您将看到/root/.ssh/authorized_keysghost@ubuntu。结尾的文件密钥。
这意味着幽灵用户已经复制了他的密钥对,而不必再输入密码了。
我不确定它-u <username>现在是否可以与flag 一起使用,但是您始终可以使用以下用户身份登录

su <user_name> 

然后ssh-copy-id ...


1
将安装密钥/root/.ssh/authorized_keys而不是安装密钥/home/ghost/.ssh/authorized_keys吗?我刚刚更新了当前正在执行的为新用户安装公钥的过程。只是在寻找更好的方法。谢谢!
realguess 2013年

该密钥将安装在您要远程连接的用户的家中。您可以使用ssh-copy-id的-i选项来指定要复制的密钥,但是不能使用普通的ssh-copy-id将其复制到另一个目录。
user2313067 2013年

你可以指定作为用户,您将复制键,如果你想以root身份登录比的ssh-copy-id命令根@主机的IP,如果你想为鬼比的ssh-copy-id命令鬼@主机IP
mirkobrankovic

1
该系统设置为仅允许通过公共密钥登录。由于用户ghost是新创建的,因此没有可用的公共密钥。这就是为什么需要先为用户安装公钥,然后才ssh-copy-id ghost@host-ip可以工作的原因。但是,谢谢,我认为远程服务器上的一些额外命令不会有什么大不了的。
realguess 2013年

是的,首先需要生成发布。远程服务器的关键语言环境,而不是ssh-copi-id
mirkobrankovic
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.