向没有 ssh-copy-id 的用户添加 ssh 密钥

向没有 ssh-copy-id 的用户添加 ssh 密钥

如果我想要连接到一台主机,并且当前已插入键盘和显示器,我将如何将密钥复制给用户,以便我可以以该用户的身份进行远程连接。本质上,我想做与 ssh-copy-id 相同的事情,但不必首先通过 ssh 连接。

答案1

密钥存储在 下的文本文件中$HOME/.ssh/authorized_keys

要添加新密钥,只需将密钥的 *.pub 文件的内容复制到该文件的新行即可。

还提供一些更多信息在 SSH 网站上

答案2

例如,使用以下命令:

scp name_of_public_key.pub root@<remote IP address>:</home/user_home_folder or /root>

然后 ssh 登录到远程主机并转到用户的主文件夹

cd

或者

cd /home/name_of_user

然后输入:

cat name_of_public_key.pub >> .ssh/authorized_keys

公钥添加到文件authorized_keys 的末尾。公钥不是秘密。

答案3

这个 oneliner 将使该过程自动化:

cat .ssh/id_ecdsa.pub | xargs -i ssh NameOfServer "echo {} >> .ssh/authorized_keys"

该脚本捕获您的公钥,使用-i将通过管道输入的输出传递到任何{}.然后,您可以 ssh 进入目标服务器,并将您的 pubkey 回显到授权密钥文件中,从而获得 sshkey 访问权限。

但是,如果目标计算机没有.ssh文件夹或authorized_keys文件,则会失败,因此以下脚本使用 bash 条件解决了该问题:

cat .ssh/id_ecdsa.pub | xargs -i ssh $1 "if [[ ! -e .ssh/authorized_keys ]]; 
then mkdir .ssh; touch .ssh/authorized_keys; fi; echo {} >> .ssh/authorized_keys"

if 语句检查目标目录是否存在,然后退出,或者先创建目标目录然后退出。

相关内容