Вы можете проверить это с помощью возвращаемого значения, которое дает вам 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)
Но вам нужно будет ввести сообщение с помощью grep (Nmap не использует возвращаемое значение, чтобы показать, был ли порт отфильтрован, закрыт или открыт).
РЕДАКТИРОВАТЬ2:
Если вас интересует фактическое состояние ssh-порта, вы можете заменить его grep open
на egrep 'open|closed|filtered'
:
$ nmap host -PN -p ssh | egrep 'open|closed|filtered'
Просто чтобы быть полным.
ssh-keygen
для создания пары ключей на локальном компьютере, а затемssh-copy-id
для копирования открытого ключа на удаленные машины. Кажется, ты делаешь иначе. Почему, какова твоя цель?