Ви можете перевірити це за допомогою поверненого значення 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 не використовує return-value, щоб показати, чи порт був відфільтрований, закритий чи відкритий).
EDIT2:
Якщо ви зацікавлені в фактичний стан SSH-порт, ви можете замінити grep open
з egrep 'open|closed|filtered'
:
$ nmap host -PN -p ssh | egrep 'open|closed|filtered'
Просто щоб бути повним.
ssh-keygen
для створення пари ключів на локальній машині, а потімssh-copy-id
для копіювання відкритого ключа на віддалені машини. Здається, ви робите речі інакше. Чому, яка ваша мета?