Вы можете проверить это с помощью возвращаемого значения, которое дает ssh:
$ ssh -q user@downhost exit
$ echo $?
255
$ ssh -q user@uphost exit
$ echo $?
0
РЕДАКТИРОВАТЬ: Другой подход будет использовать nmap (вам не нужно иметь ключи или логин):
$ a=`nmap uphost -PN -p ssh | grep open`
$ b=`nmap downhost -PN -p ssh | grep open`
$ echo $a
22/tcp open ssh
$ echo $b
(empty string)
Но вы должны будете просмотреть сообщение (nmap не использует возвращаемое значение, чтобы показать, был ли порт фильтрован, закрыт или открыт).
EDIT2:
Если вас интересует фактическое состояние ssh-порта, вы можете заменить grep open
на egrep 'open|closed|filtered'
:
$ nmap host -PN -p ssh | egrep 'open|closed|filtered'
Просто чтобы быть полным.