En vez de llenar nuestra llamada a ssh
de parámetros lo aconsejable
es configurar la llamada en uno de los ficheros de configuración (man ssh_config
).
SSH consulta las opciones en el siguiente orden:
~/.ssh/config
Este fichero debe tener permisos de lectura/escritura para el usuario
y no ser accesible al resto.
/etc/ssh/ssh_config
Para cada parámetro el primer valor encontrado será el utilizado.
Los ficheros de configuración contienen secciones. Cada sección comienza con una
especificación de Host
. Las especificaciones en esa sección sólo
se aplican a los máquinas (tal y como se especifico en la línea de comandos)
que casen con el patrón especificado en Host . Por ejemplo, si escribo en la
línea de comandos:
pp2@nereida:~/Lbook$ ssh rbeo
Se buscará en mi fichero de configuración ~/.ssh/config
por una especificación
Host rbeo
. En efecto, en mi fichero existe una:
... Host rbeo user otheruser Hostname localhost Port 2048 IdentityFile /home/pp2/.ssh/ursu ...
La sección dice que opciones deben aplicarse cuando nos conectamos a rbeo
:
otheruser
localhost
ssh-keygen
)
/home/pp2/.ssh/ursu
Las líneas que comienzan por el carácter #
son tratadas como comentarios.
Es posible añadir líneas en blanco para aumentar la legibilidad.
El resto de las líneas deben seguir el patrón
PALABRACLAVE argumentos
Algunas palabras clave importantes son:
*
y ?
.
Define la sección. Si el nombre proveído en la línea de comandos
casa con él las reglas de la sección serán aplicadas.
passphrase/password
.
Además las opciones ServerAliveInterval 2.1
y SetupTimeOut 2.2
se establecen a 300 segundos. Esta opción es útil cuando se usan
procesos por lotes o programas - por ejemplo cuando se usa GRID::Machine
-
en los que no hay un usuario presente para proporcionar
una clave y es necesario detectar la caída de la red. El argumento
debe ser yes
o no
. El valor por defecto es no
yes
.
Si se establece la opción Compression se compactarán los datos según diga CompressionLevel (de 1 a 9)
ssh
host
al que entramos. Esto nos permite
tener apodos y abreviaciones. El valor usado por defecto es el
proveído en la línea de comandos. Se permite poner direciones IP
numéricas.
~/.ssh/identity
para la versión 1
del protocolo y ~/.ssh/id_rsa
y ~/.ssh/id_dsa
para la versión
2. Si hay un agente cargado el agente intentará también las otras identidades.
Es posible especificar múltiples identidades, las cuales serán intentadas
en secuencia.
Esta opción es conveniente cuando el directorio home
es compartido entre un conjunto de máquinas (via NFS por ejemplo).
En ese caso localhost refiere a una máquina distinta
en cada una de las máquinas del conjunto.
En tal caso, las conexiones a localhost
dan lugar a un buen número de warnings indicando
que la clave ha cambiado.
Es útil probar con esta opción si la conexión se desconecta después de un corto periodo de inactividad. Ciertos administradores configuran sus servidores de manera que responden muy tardíamente. Sigue un fragmento de mi configuración desde fuera de la Universidad:
Host cardon user pepito Hostname cardon.ull.es ForwardX11 yes ServerAliveInterval=30
Establece el número de mensajes alive que
pueden ser enviados por el cliente ssh
sin que este reciba
respuesta desde el servidor. Si se supera este umbral el
cliente abandona, finalizando la sesión. El valor por
defecto es 3. (Sólo para el protocolo 2).
Especifica si se deben enviar mensajes TCP keepalive
al otro lado. Si se envían se podrán detectar los fallos
en las máquinas remotas. El valor por defecto es yes
,
de modo que el cliente se percate de la caída del remoto.
~/.ssh/known_hosts
para las claves de máquinas
Sigue un ejemplo de fichero de configuración de usuario:
pp2@nereida:~/.ssh$ cat -n config 1 # man ssh_config 2 3 GSSAPIAuthentication no 4 5 Host somemachine 6 user myname 7 Hostname somemachine.pcg.ull.es 8 #ForwardX11 yes 9 10 Host ursu 11 user otheruser 12 Hostname somemachine.pcg.ull.es 13 IdentityFile /home/pp2/.ssh/ursu 14 #ForwardX11 yes 15 16 Host chazam chazam.pcg.ull.es chazam.deioc.ull.es chum 17 user myname 18 # The real name of the machine 19 Hostname chazam.pcg.ull.es 20 21 # Example to be used when connecting via reverse tunneling 22 # myname@somemachine:~$ ssh -R2048:localhost:22 pp2@nereida 23 # Logic name for the machine 24 Host rbeo 25 # user in the remote machine 26 user otheruser 27 # The 'real name' of the machine after the tunnel 28 Hostname localhost 29 # Port to connect to 30 Port 2048 31 IdentityFile /home/pp2/.ssh/ursu
Cada vez que ocurre una conexión SSH el servidor ejecuta el script
en /etc/sshrc
. Si existe un fichero ~/.ssh/rc
(SSH1, OpenSSH) o ~/.ssh2/rc
(SSH2),
será invocado. Su presencia inhibe la ejecución de /etc/sshrc
.
Se ejecuta tanto si la sesión es interactiva como si es un comando.