驚くべきことに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
名前をバーキーに変更してください。
このアプローチが適用されるケースは次のとおりです。
- リモートホストに
.ssh
ディレクトリがない可能性があります。 authorized_keys
ファイルが存在しない可能性があります。- 存在する場合は、
authorized_keys
SSH公開鍵を交換/更新/追加したい場合は、重複する項目なしで機能します。同じ説明を含むエントリがすでに存在する場合、このスクリプトはそのエントリを置き換えます。