¿Alguno de vosotros seguís utilizando Tru64 Unix? Según el roadmap de HP no deberíais, pero ya sabemos que es lo que suele ocurrir. Su último versión parche fue la 5.1B-6 y nos la enviaron en CDs hace 10 años. Pero han pasado más de 15 desde el último cambio importante. Tru64 Unix no tiene ssh-copy-id
y si queremos entrar de Unix a Linux sin contraseña con ssh no es trivial, pero es bastante fácil de hacer.
Si nuestro servidor Linux ssh está securizado según esta guía, ya no nos dejaría entrar con usuario y contraseña, así que estos serían los pasos para autenticarnos con el par de claves.
Crear par de claves con ssh-keygen
$ ssh-keygen
Generating 2048-bit dsa key pair
5 oOo.oOo.oOOo
Key generated.
2048-bit dsa, inthenite@tru64, Wed May 27 2020 10:09:39 +0200
Passphrase :
Again :
Key is stored with NULL passphrase.
(You can ignore the following warning if you are generating hostkeys.)
This is not recommended.
Don't do this unless you know what you're doing.
If file system protections fail (someone can access the keyfile),
or if the super-user is malicious, your key can be used without
the deciphering effort.
Private key saved to /home/inthenite/.ssh2/id_dsa_2048_a
Public key saved to /home/inthenite/.ssh2/id_dsa_2048_a.pub
Nos ha generado la clave pública y la privada. La pública será la que tendremos que llevar a otra máquina y convertirla. Como curiosidad hay que fijarse que en Tru64 Unix, los certificados no se generan en ~/.ssh
sino en ~/.ssh2
Definir la clave para autenticación
En Tru64 Unix nos hace falta un fichero identification
en el directorio ~/.ssh2
que identifique el fichero con la clave privada que usaremos para autenticarnos en la máquina remota.
cd $HOME/.ssh2
echo "IdKey id_dsa_2048_a " > identification
Copiar el fichero a la máquina Linux
Habitualmente lo haríamos con un ssh-copy-id, pero no tenemos en Tru64 Unix. Por lo que lo copiaremos a mano. Recordad que se copia la clave pública y no la privada. Y el directorio destino ~/.ssh
debe de existir.
cd $HOME/.ssh2
scp id_dsa_2048_a.pub rh54:/local/inthenite/.ssh
Convertir la clave de formato
En la máquina destino tendremos que convertir la clave pública, ya que el formato es muy parecido pero no el mismo. Se podría hacer a mano, pero aprovecharemos que ssh-keygen
también convierte.
cd $HOME/.ssh
ssh-keygen -i -f id_dsa_2048_a.pub > id_dsa_2048_converted.pub
Añadir la clave a la lista de autorizadas
El último paso es añadir el contenido de la clave pública convertida al de claves autorizadas.
cd $HOME/.ssh
cat id_dsa_2048_converted.pub >> authorized_keys
Y sólo nos faltaría la comprobación final, pulsaríamos CTRL+D para cerrar la sesión en la máquina Linux y desde la máquina Tru64 podríamos ejecutar ya el ssh
inthenite@tru64:~$ ssh rh54
Last login: Thu May 21 20:08:58 2020 from 192.168.1.93
[inthenite@rh54 ~]$
Diferencias entre Tru64 y Linux
Vamos a ver cómo son los ficheros de la clave pública en Tru64 y en Linux. He recortado la clave pública para que se vea mejor la diferencia. Primero el de Tru64:
---- BEGIN SSH2 PUBLIC KEY ----
Subject: inthenite
Comment: "2048-bit dsa, inthenite@tru64, Wed May 27 2020 \
10:09:39 +0200"
AAAAB3NzaC1kc3MAAAEBANLkfLh3n/je58sRhpBsukRNO6SXmwymQTvGsEyFBR2Szdf/m/AV+PDguv2P9cLPIZprfWwlUnfF4+hZ0tTbOMOwY
---- END SSH2 PUBLIC KEY ----
Y en Línux:
ssh-dss AAAAB3NzaC1kc3MAAAEBANLkfLh3n/je58sRhpBsukRNO6SXmwymQTvGsEyFBR2Szdf/m/AV+PDguv2P9cLPIZprfWwlUnfF4+hZ0tTbOMOwY