Реализовать автоматическое добавление секретных ключей в ssh-agent при их использовании в ssh-клиенте.
Условия:
Ключей несколько и все разные.
Решение:
Написать такой скрипт:
#!/bin/bash
SSH=/usr/bin/ssh
SSHKEY=`echo x | $SSH -oConnectTimeout=1 -oNumberOfPasswordPrompts=0 -oProxyCommand=none -v $@ exit 2>&1 | grep "Offering .* public key" | tail -n 1 | grep -o "/.*[a-zA-Z]"`
ssh-add -l | grep -qs "$SSHKEY" || ssh-add "${SSHKEY}"
$SSH $@
Назвать его ssh и поместить в путь перед настоящим ssh, чтобы вместо настоящего ssh вызывался этот скрипт.
Пояснения:
Сначала запускается подключение ssh с отладочными сообщениями (с отключенным запросом пароля, чтобы не происходила авторизация, а происходило отключение), чтобы узнать какой ключ будет использоваться, после добавляется ключ в агент и запускается обычное подключение ssh.
Минус в том, что фактически подключение производится дважды, но зато не надо добавлять ключ руками.
Скрипт так же работает с sshfs.
Разработка моя, в интернете находил решение только для одного ключа.