2016-06-24 3 views
1

Я подключил два сервера, используя обмен ключами SSH. Теперь я могу войти на удаленный сервер без пароля.Подтвердить подключение SSH с помощью SSH-ключей

Теперь я хочу проверить, действительно ли соединение работает без пароля. Как я могу это сделать?

Я пробовал следующий подход, когда SSH должен был зайти через 10 секунд, я запишу его код возврата. но это никогда не происходит. После этого тайм-аут. Он остается в подсказке пароля.

ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 [email protected] exit 

if [ "$?" -ne 0 ];then 
    echo "SSH keys no more working,you need to initiate keys exchange again!!" 
    exit 1; 
fi 

Case-я

Однако, когда ключи SSH не работает, то и никогда не тайм-аут и остаются на ввод пароля. Таким образом, невозможно захватить код возврата.

ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 [email protected] exit 
Enter Windows password: 

случай-II

Когда я обеспечиваю IP-адрес, который не pingable то это Approch работы.

ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 [email protected] exit 
ssh: connect to host ip1.ip1.ip1.ip1 port 22: Connection timed out 

Нужна помощь при определении того, работает ли соединение SSH без пароля.

+0

Советую вам сделать 'ssh -v'. Это даст вам некоторую отладочную информацию о том, какой тип аутентификации используется ssh (особенно, если присутствует открытый ключ на вашем хосте). – oliv

+0

@ Кир, тот же результат..Комманд никогда не выходит. –

ответ

1

Вы можете отключить аутентификацию с помощью пароля, используя PasswordAuthentication=no. Он будет сбой немедленно, когда аутентификация pubkey не удастся.

ssh -o BatchMode=yes -o ConnectTimeout=15 [email protected] exit 

Редактировать: Использование BatchMode должно обязательно работать.

+0

Удивительно, поэтому необходима комбинация PasswordAuthentication и ConnectTimeout !! –

+0

'ConnectionTimeout' не требуется, но было бы полезно, если сервер недоступен. – Jakuje

+0

Извините, что такая же команда не работает, ее запрос на пароль –

Смежные вопросы