sshen sí mismo puede hacerlo a través de Matchdocumentado, ssh_config(5)aunque la documentación es algo escasa en ejemplos. Este formulario puede ser adecuado si se quiere introducir la complejidad en la configuración de SSH, aunque está restringido por las limitaciones de la ssh_config(5)sintaxis y puede requerir un poco de manipulación para el resultado deseado. En particular, el puerto personalizado no se puede configurar o se puede configurar incorrectamente desde el Matchintento anterior . Es por eso que, a continuación, se establece dos veces cuando se prueba, o una vez por defecto, y no se establece al establecer los valores predeterminados canónicos.
# here we set the defaults for the host (no port!)
Match !canonical host testhost
CanonicalizeHostname yes
Hostname 192.0.2.42
IdentityFile ~/.ssh/id_blahblah
...
# port available?
Match canonical host 192.0.2.42 exec "is-ssh-up %h 2222"
Port 2222
# or the default port
Match canonical host 192.0.2.42
Port 22
is-ssh-up simplemente verifica si algo responde en el puerto dado y podría verse como
#!/usr/bin/env expect
package require Tcl 8.5
if {[llength $argv] < 2} {
puts stderr "Usage: is-ssh-up host port"
exit 1
}
puts stderr "is-ssh-up: DEBUG trying $argv"
set socket [socket -async [lindex $argv 0] [lindex $argv 1]]
chan event $socket readable [list exit 0]
after 3000 [list exit 1]
vwait godot