miércoles, 22 de febrero de 2012

Conectarte con ssh sin contraseña entre dos nodos


Una de las cosas mas comunes que tienes que hacer cuando trabajas en un ambiente RAC es conectarte entre tus nodos, sobre todo para establecer los mismos estandares entres ambos.

Pero con lo que te topas cuando estas haciendo esto, es que cada vez que haces una sesion de ssh , tienes que introducir tu password.

Lo primero que te tienes que asegurar es que en /etc/ssh/sshd_config, las siguientes entradas se encuentren y esten habilitadas en tu configuracion del servidor de ssh,  : 

oracle@servidor1.oracleenespanol.blogspot.com [DBATEST] /home/oracle
oracle $ cat /etc/ssh/sshd_config | egrep "RSAAuthentication|PubkeyAuthentication"
RSAAuthentication yes
PubkeyAuthentication yes


Si las entradas no se encontraban habilitadas o las tuviste que agregar, tienes que reiniciar tu servidor de ssh

oracle@servidor1.oracleenespanol.blogspot.com [DBATEST] /home/oracle
oracle $ /etc/init.d/sshd restart
Stopping ssh:                                             [  OK  ]
Starting ssh:                                             [  OK  ]

De igual manera, si el directorio .ssh no se encuentra, crealo de la siguiente manera

oracle@servidor1.oracleenespanol.blogspot.com [DBATEST] /home/oracle
oracle $ mkdir ~/.ssh

oracle@servidor1.oracleenespanol.blogspot.com [DBATEST] /home/oracle
oracle $ chmod 700 ~/.ssh

oracle@servidor1.oracleenespanol.blogspot.com [DBATEST] /home/oracle
oracle $ cd ~/.ssh

Ahora lo que hay que crear es un par de llaves, llamadas publicas/privadas, estas llaves son las que te vas a permitir hacer tu conexion via ssh sin un password

oracle@servidor1.oracleenespanol.blogspot.com [DBATEST] /home/oracle/.ssh
oracle $ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
45:b5:fd:0f:40:35:3e:6e:c6:70:1c:9d:9b:dd:fc:9e

oracle@servidor1.oracleenespanol.blogspot.com [DBATEST] /home/oracle/.ssh
oracle $ ls id_rsa*
id_rsa  id_rsa.pub

Una vez que creaste tu par de llaves, hay que agregar  la llave publica a tu segundo nodo, la manera que lo hago yo, es copiar al segundo nodo un archivo temporal de la llave publica

oracle@servidor2.oracleenespanol.blogspot.com [DBATEST] /home/oracle/.ssh
oracle $ scp servidor1.oracleenespanol.blogspot.com:/home/oracle/.ssh/id_rsa.pub ./id_rsa.pub.tmp

Password:
id_rsa.pub                                                                                                                        100%  401     0.4KB/s   00:00

oracle@servidor2.oracleenespanol.blogspot.com [DBATEST] /home/oracle/.ssh
oracle $ ls *.tmp
id_rsa.pub.tmp

Luego la anexo al archivo de llaves autorizadas, pero antes de hacer esto , creo un respaldo de este archivo, no vaya a ser que la Ley de Murphy se presente :)

oracle@servidor2.oracleenespanol.blogspot.com [DBATEST] /home/oracle/.ssh
oracle $ ls authorized_keys
authorized_keys

oracle@servidor2.oracleenespanol.blogspot.com [DBATEST] /home/oracle/.ssh
oracle $ scp -p authorized_keys authorized_keys.22Feb2012

oracle@servidor2.oracleenespanol.blogspot.com [DBATEST] /home/oracle/.ssh
oracle $ cat id_rsa.pub.tmp >> authorized_keys

Ya que hiciste lo anterior , vas a poder hacer una sesion de ssh entre tus dos nodos sin que te este requiriendo un password.