Можно установить параметр для команды ssh, чтобы использовать только открытый ключ в процессе аутентификации, и установить пакетный режим с командой, которая всегда возвращает значение true, когда команда выполняется на удаленном хосте.При таком подходе вы можете записать код выхода в переменную $?и принять какое-то решение.
ssh -o PreferredAuthentications=publickey -o BatchMode=yes <host> /bin/true &> /dev/null
if [ $? -eq 0 ]; then
#DO SOMETHING, THE CONNECTION WAS SUCCESSFUL
else
#CONECTION DENIED
fi
Вы можете записать пользовательский вывод в переменную, найдя «Отказано в доступе» в подробном выводе команды ssh, как в следующем коде.
PERMISION=$([ ! -z "$(ssh -v -o PreferredAuthentications=publickey -o BatchMode=yes <host> /bin/true 2>&1 | grep " Permission denied")" ] && echo "GRANTED" || echo "DENIED")
if [ $PERMISION == "GRANTED" ]; then
#DO SOMETHING, THE CONNECTION WAS SUCCESSFUL
else
#CONECTION DENIED
fi
Я надеюсьэто поможет вам.