日常生活で必須SSH私はそれらすべてに対して異なる秘密鍵を持っています。
新しいシェルセッションを開始すると、デフォルトのid_rsaのみがSSHキーチェーンに追加されます。引き続き実行されます。
SSH を追加 ~/.ssh/*
しかし、次のようなものを追加すると~/.ssh/config
find
/を使用してgrep
これを行うにはどうすればよいですか?ただ有効な秘密鍵ファイルを追加しますか?
答え1
少し複雑ですが:
for possiblekey in ${HOME}/.ssh/id_*; do
if grep -q PRIVATE "$possiblekey"; then
ssh-add "$possiblekey"
fi
done
追加することもできます。みんな鍵は~/.ssh/config
独自のIdentityFile
指示に従って提供されます。外部指示Host
:
# Global SSH configurations here will be applied to all hosts
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_project1
IdentityFile ~/.ssh/id_someotherkey
Host somespecifichost.example.com
IdentityFile ~/.ssh/id_specifichostonlykey
正直なところ、より良い後者のアプローチは、「キーリング」に明示的に追加せずに追加した新しいキーを突然選択しないという追加の利点があります。
答え2
実際には必要はありません。再帰 grep を使用して、次のフラグを使用して一致するファイル名のみを送信find
できます。l
grep -slR "PRIVATE" ~/.ssh/ | xargs ssh-add
答え3
これを行うには、次のコマンドを考えました。
find ~/.ssh/ -type f -exec grep -l "PRIVATE" {} \; | xargs ssh-add &> /dev/null
これ find
です.ssh含めるディレクトリPRIVATE
、秘密鍵ファイルの名前/パスをssh-add
。
答え4
id_
正規表現を使用して、ドットサフィックスで始まるが終了しないすべてのファイルを一致させます.pub
。
find ~/.ssh -type f -regextype egrep -regex '.*/id_[^.]+$' | xargs ssh-add
forループを使用する際の問題(許可された回答に示されている)は、すべてのキーが同じパスワードを使用してもパスワードを入力する必要があることです。