Bash/ssh для проверки подлинности с открытым ключом

Есть ли способ программно проверить, может ли ssh аутентифицироваться с использованием открытого ключа? Я хотел бы сделать что-то вроде этого (желательно в bash, но я открыт для решения python):

ssh-test-thingy [email protected] || echo "could not authenticate using publickey"

где ssh-test-thingy возвращает ненулевой статус выхода, если на удаленном хосте нет открытого ключа.

Ответ 1

Я бы передал параметр -o BatchMode=yes в ssh и посмотрел, работает ли это. Он отключит запрос пароля, который, на мой взгляд, практически эквивалентен вашему желанию выяснить, возможна ли аутентификация через ключи. ssh-test-thingy может быть записано как bash script так:

exec ssh -o BatchMode=yes "[email protected]" true

Это просто передаст user @host (и любые другие аргументы) и попытается запустить true на удаленном хосте, который, если он работает, немедленно вернет код успеха (0).