令我惊讶的是,我发现ssh-copy-id
如果您没有密钥的私有部分,则会失败,从而使其无法用于部署其他密钥。
我正在寻找一种可靠的方法来部署这些密钥,因此如果您运行它两次,它一定不会创建重复的条目。
答案1
试试这个(换行符可选):
cat ~/.ssh/id_rsa.pub |
ssh <REMOTE> "cat > tmp.pubkey ;
mkdir -p .ssh ;
touch .ssh/authorized_keys ;
sed -i.bak -e '/$(awk '{print $NF}' ~/.ssh/id_rsa.pub)/d' .ssh/authorized_keys;
cat tmp.pubkey >>.ssh/authorized_keys;
rm tmp.pubkey"
确保替换<REMOTE>
为您尝试连接的主机名。还要更改id_rsa.pub
为您的酒吧密钥的名称。
本办法涵盖的案例:
- 远程主机可能没有
.ssh
目录 authorized_keys
文件可能不存在- 如果
authorized_keys
确实存在并且您想要替换/更新/添加您的 ssh 公钥,这将无需重复条目即可工作。如果已经存在具有相同注释的条目,则此脚本将替换该条目。