鍵の秘密部分がない場合は、失敗するssh-copy-idの効率的な選択肢をお探しですか?

鍵の秘密部分がない場合は、失敗するssh-copy-idの効率的な選択肢をお探しですか?

驚くべきことにssh-copy-id、鍵の個人的な部分がなければ、これは失敗し、他の鍵を配布するために使用できないことを発見しました。

私はこれらのキーを配布するための信頼性の高い方法を探しているので、2回実行しても重複するエントリは生成されません。

答え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_keysSSH公開鍵を交換/更新/追加したい場合は、重複する項目なしで機能します。同じ説明を含むエントリがすでに存在する場合、このスクリプトはそのエントリを置き換えます。

関連情報