正在寻找 ssh-copy-id 的有效替代方案,如果您没有密钥的私有部分,则会失败?

正在寻找 ssh-copy-id 的有效替代方案,如果您没有密钥的私有部分,则会失败?

令我惊讶的是,我发现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为您的酒吧密钥的名称。

本办法涵盖的案例:

  1. 远程主机可能没有.ssh目录
  2. authorized_keys文件可能不存在
  3. 如果authorized_keys确实存在并且您想要替换/更新/添加您的 ssh 公钥,这将无需重复条目即可工作。如果已经存在具有相同注释的条目,则此脚本将替换该条目。

相关内容