Usando Ssh

*.Cada vez que nos logueamos en un servidor se genera una validacion entre claves.*

Vamos a ver como usar ssh con llaves.

stationx:~# ssh -l root 192.168.1.90
The authenticity of host '192.168.1.90 (192.168.1.90)' can't be established.
RSA key fingerprint is 16:a0:f6:09:b6:ba:ea:08:9c:c4:ef:69:e7:d9:1d:ec.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.90' (RSA) to the list of known hosts.
root@192.168.1.90's password: 
Last login: Fri Aug 20 13:27:24 2010 from 192.168.1.100
Linux asterisk 2.6.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
asterisk:~#

*. Para que podamos ingresar al equipo remoto vamos a utilizar la herramienta ssh-keygen para crear las llaves publicas y privadas .*
*. Tengan en cuenta que tenemos que tener una passphrase para proteger nuestra llave privada por eso cuando nos la pida llenen el cambio con la clave que corresponde, generalmente la misma clave que el usuario.*
*. Esta clave privada es nuestra si alguien usa nuestra clave privada se va a poder conectar a todos los equipos en donde tengan nuestra llave publica asi que tengan cuidado 🙂 .*

 stationx:~# ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
a3:98:98:c0:a2:4d:b6:05:13:e4:a5:04:0f:40:7f:d4 root@stationx
The key's randomart image is:
+--[ RSA 2048]----+
|*++ ...          |
| =.+.  E         |
|  *. .           |
|.  o.            |
|o.o .   S        |
|o= = o . .       |
|. = o .          |
|                 |
|                 |
+-----------------+
stationx:~# 

*. Ahora ya generamos nuestra clave y nuestro proximo paso es copiar nuestra llave publica a los servidores que vamos a loguearnos diariamente .*
*.Tengan en cuenta que nos va a pedir la clave del equipo remoto.*

stationx:~# ssh-copy-id 192.168.1.90
root@192.168.1.90's password: 
Now try logging into the machine, with "ssh '192.168.1.90'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

stationx:~#

*. Si quisieramos ver nuestra llave publica .*

asterisk:~# ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub 
2048 16:a0:f6:09:b6:ba:ea:08:9c:c4:ef:69:e7:d9:1d:ec /etc/ssh/ssh_host_rsa_key.pub
asterisk:~# 

*. Ahora si vamos a intentar loguearnos por primera vez al equipo remoto .*

stationx:~# ssh 192.168.1.90
Enter passphrase for key '/root/.ssh/id_rsa': 
Enter passphrase for key '/root/.ssh/id_rsa': 
Last login: Fri Aug 20 13:33:07 2010 from 192.168.1.99
Linux asterisk 2.6.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
asterisk:~#

*.Como ven todavia nos esta pidiendo una clave, y es la clave privada, en el caso de que no le hallan configurado una clave a su clave privada ya estarian entrando sin poner ninguna clave .*

*. Ahora vamos a ver como configurarlo para que no nos pida esa passphrase de nuestra clave privada.*
*. Podriamos hacerlo de esta manera mas larga.*

 stationx:~# ssh-agent 
SSH_AUTH_SOCK=/tmp/ssh-bShHpq2910/agent.2910; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2911; export SSH_AGENT_PID;
echo Agent pid 2911;
stationx:~# 

*. Esos comandos que tiro por lineas lo tendriamos que copiar y pegar para que los ejecute la shell, pero seria muy engorroso asi que vamos a realizarlo de la siguiente manera.*
*. Tengan en cuenta que les va a pedir su passphrase.*

stationx:~# ssh-agent -k
SSH_AGENT_PID not set, cannot kill agent
stationx:~#
stationx:~# eval `ssh-agent`
Agent pid 2915
stationx:~# ssh-add
Enter passphrase for /root/.ssh/id_rsa: 
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
stationx:~# 

*. Ahora si probamos acceder .*

stationx:~# ssh 192.168.1.90
Last login: Fri Aug 20 13:40:03 2010 from 192.168.1.99
Linux asterisk 2.6.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
asterisk:~#

*. Como ven ahora ya no me pide mas mi passphrase .*
*. Hay que tener en cuenta que esto va a funcionar unicamente en la shell que lo ejecutamos para no tener que hacer esto cada vez que nos logueamos tendriamos que hacer lo siguiente.*
*. Para eso vamos a modificar nuestro .profile que es uno de los archivos que lee aca cada vez que nos logueamos en el sistema.*

stationx:~# cat .profile 
# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n

eval `ssh-agent`
/root/.loguear
stationx:~#

*. Las dos ultimas lineas son las que agregamos al .profile de nuestro home directory, la primera es para que inicie el ssh-agent,
la segunda va a ejecutar un script en donde va utilizar una aplicacion llamada expect que me va a permitir capturar la password sin tener que tipearla.*
*. Les dejo como quedaria el script, no se olviden de darle permisos de ejecucion.*

stationx:~# cat .loguear 
#!/usr/bin/expect -f
spawn ssh-add
expect "Enter passphrase /root/.ssh/id_rsa: "
send -- "educacionit\r"
expect eof
stationx:~#

*. Fijense de tener el expect instalado, sino tan solo aptitude install expect ya estaria todo resuelto.*
*. Entonces la proxima vez que me logue al equipo ya sea a una tty o una terminal remota me va a cargar mi llave privada.*
*. En este caso estoy entrando desde mi linux nativo a la maquina virtual donde esta realizada la practica .*
*- Tengan en cuenta que les va aparecer la frase pidiendole la clave, pero no pongan nada esperen unos segundos que se hace todo solo !!! 🙂 .*

[rino@restauracion .ssh]$ ssh -l root 172.16.199.168
root@172.16.199.168's password: 
Linux stationx 2.6.26-2-686 #1 SMP Thu Aug 19 03:44:10 UTC 2010 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 22 00:23:15 2010 from 172.16.199.1
Agent pid 3209
spawn ssh-add
Enter passphrase for /root/.ssh/id_rsa: 
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
stationx:~#

*. Aca accedo de mi maquina virtual otra vez a mi maquina nativa.*

stationx:~# ssh rino@192.168.1.100
Last login: Sun Aug 22 01:22:30 2010 from 192.168.1.100
====> Text of this message is in /etc/motd <====
Frase del dia:
A penny saved has not been spent.
[rino@restauracion ~]$ 

*. Algo importantisimo es le archivo .loguear porque tenemos nuestra clave al descubierto.. asi que fijense el tema de los permisos.*

stationx:~# ls -la .loguear 
-rwxr--r-- 1 root root 116 2010-08-22 00:21 .loguear
stationx:~# 
stationx:~# chmod u=rwx,g=,o= .loguear 
stationx:~# ls -la .loguear 
-rwx------ 1 root root 116 2010-08-22 00:21 .loguear
stationx:~#

*. Ahora si esta mejor, tan solo el dueño puede leerlo, escribirlo y ejecutarlo.*

*. Espero que les halla servido .*

One thought on “Usando Ssh

Leave a Reply