ssh-add добавить все закрытые ключи в .ssh каталог

В моем изо дня в день мне нужно ssh для разных машин, для которых у меня есть отдельный закрытый ключ.

Когда я запускаю новый сеанс оболочки – только мой id_rsa по умолчанию добавляется в цепочку ключей ssh ​​- я запускал

ssh-add ~ / .ssh / *

Однако это также пытается и не удается при добавлении таких вещей, как ~ / .ssh / config

Используя find / grep , как я могу использовать только добавление действительных файлов закрытого ключа?

Немного запутанный, но:

 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 

Последний, честно-лучший, метод имеет добавленную черту, не внезапно поднимая новый ключ, который вы добавили, без вашего явного добавления его в «брелок».

Для этого я придумал следующую команду:

 find ~/.ssh/ -type f -exec grep -l "PRIVATE" {} \; | xargs ssh-add &> /dev/null 

Это find все файлы в каталоге .ssh , содержащие PRIVATE , передав имя / путь файла закрытого ключа в ssh-add .