如果我想要连接到一台主机,并且当前已插入键盘和显示器,我将如何将密钥复制给用户,以便我可以以该用户的身份进行远程连接。本质上,我想做与 ssh-copy-id 相同的事情,但不必首先通过 ssh 连接。
答案1
答案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 语句检查目标目录是否存在,然后退出,或者先创建目标目录然后退出。