Puede verificar esto con el valor de retorno que ssh le brinda:
$ ssh -q user@downhost exit
$ echo $?
255
$ ssh -q user@uphost exit
$ echo $?
0
EDITAR: Otro enfoque sería usar nmap (no necesitará tener claves o cosas de inicio de sesión):
$ 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)
Pero tendrá que grep del mensaje (nmap no usa el valor de retorno para mostrar si un puerto fue filtrado, cerrado o abierto).
EDIT2:
Si está interesado en el estado real del puerto ssh, puede sustituirlo grep open
por egrep 'open|closed|filtered'
:
$ nmap host -PN -p ssh | egrep 'open|closed|filtered'
Solo para estar completo.
ssh-keygen
para generar un par de claves en la máquina local y luegossh-copy-id
para copiar la clave pública en las máquinas remotas. Parece que estás haciendo las cosas de manera diferente. ¿Por qué, cuál es tu objetivo?