В ssh-agent
и последних версиях OpenSSH все просто:
Запустите обычный ssh-agent
с таймаутом по умолчанию для добавленных ключей (например, 60 минут):
eval `ssh-agent -t 60m`.
Настройте ваш ssh
для добавления фактически используемых ключей в агент. Добавьте новую строку в ~/.ssh/config`:
AddKeysToAgent yes
Эта возможность появилась в последней версии OpenSSH 7.2. В предыдущих версиях вам нужно было добавлять ключ в агент вручную, если превышался таймаут, но это можно довольно просто автоматизировать с помощью функции bash, примерно так:
ssh() {
/bin/ssh -o BatchMode=yes $* || \
ssh-add path/to/the-key && /bin/ssh $*
}
Идея: Попробуйте подключиться с помощью ключа в пакетном режиме (не будет запрашиваться парольная фраза и произойдет сбой, если ключа нет), а при неудаче добавьте ключ в агент и повторно выполните команду ssh.