編集:ありこれに関するバグレポート、同等この回答。
公開鍵を複数のコンピュータにコピーするスクリプトを作成しようとしています。ssh-copy-id
コピーする前に現在の設定でログインできることを確認しますが、残念ながらここIdentityFile
には~/.ssh/config
。完全に無視する~/.ssh/config
;これを行う方法はありますか?またはssh-copy-id
キーを常に追加してもよろしいですか?これは実際にいいえ働く:
ssh-add "$old_key"
ssh-copy-id -i "$new_key" -o "IdentityFile $new_key" "$login"
これは似ていますが、SSHに.ssh/configを無視させる方法は?。
答え1
コードを確認した後、ssh-copy-id
このハッキングが機能していることを確認しました。
SSH_OPTS='-F /dev/null' ssh-copy-id [...]
ただし、文書化された機能にのみ依存するソリューションにはまだ興味があります。
答え2
の使用はSSH_OPTS
将来も保証されない可能性があります(セキュリティ上の理由から、スクリプトは最初にこれをリセットする必要があると思います。動作は指定されていない環境変数に依存してはいけません。できること(おそらくシェル機能を介して):
env PATH="/path/to/special_dir:$PATH" ssh-copy-id [...]
これには実際の作業を実行するスクリプト/path/to/special_dir
のみが含まれています。少し見苦しいですが、現在のスクリプトではこれを行うためのきちんとした方法がないと思います。ssh
ssh
-F /dev/null
ssh-copy-id