Puoi verificarlo con il valore di ritorno che ssh ti dà:
$ ssh -q user@downhost exit
$ echo $?
255
$ ssh -q user@uphost exit
$ echo $?
0
EDIT: un altro approccio sarebbe usare nmap (non avrai bisogno di chiavi o elementi di accesso):
$ 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)
Ma dovrai grep il messaggio (nmap non usa il valore di ritorno per mostrare se una porta è stata filtrata, chiusa o aperta).
EDIT2:
Se sei interessato allo stato attuale della porta ssh, puoi sostituire grep open
con egrep 'open|closed|filtered'
:
$ nmap host -PN -p ssh | egrep 'open|closed|filtered'
Solo per essere completo.
ssh-keygen
per generare una coppia di chiavi sulla macchina locale, quindissh-copy-id
per copiare la chiave pubblica su macchine remote. Sembra che tu stia facendo le cose in modo diverso. Perché, qual è il tuo obiettivo?