Hola Taringueros Linuxeros!
Aca les dejo un tuto para loguerse por ssh a una terminal remota por SSH, sin password en unos pocos pasos. Es algo copado para los que utilizan mucho este servicio ya que ahorra tiempo y evita pifiadas de clave.
En este caso host@local va a ser la terminal de donde vamos a efectuar el logueo y host@remoto es la terminal a donde nos queremos loguar.
0. Antes que nada, si no tienen el ssh arriba en la terminal remota, procedemos a instalarlo en forma local, los comandos a continuacion son sin sudo, o sea logueados como root, si no tienen el logueo como root habilitado usen sudo antes de cada comando:
Distros fork de Debian: apt-get install ssh
Distros fork de Red Hat: yum install openssh-server openssh-client
Distros fork de Arch: pacman -Sy openssh
Distros fork de Slackware: installpkg openssh-4.2p1-i486-1.tgz
Distros fork de Gentoo: emerge -av net-misc/openssh
Aclaraciones:
Para usuarios de Arch levantan el daemon invocando:
# rc.d start sshd
Y para que se levante al inicio despues de una rebooteada editan el archivo /etc/rc.conf añadiendo "sshd" a la siguiente fila
DAEMONS=(syslog-ng network netfs dbus gdm sshd crond)
Para usuarios de Gentoo levantan el daemon invocando:
# /etc/init.d/sshd start
Y para que se levante al inicio despues de una rebooteada:
# rc-update add sshd default
De todos modos si ven que el servicio no esta arriba, invocando cualquiera de estos 2 comandos en cualquier distro, deberían startear:
# service sshd start
# /etc/init.d/sshd start
Tambien vamos a necesitar saber la IP del host remoto, por ende tipeamos:
# ifconfig
Este comando imprime los datos de cada interfaz de red (eth0, wlan0, ppp0)
1. Desde la maquina de donde nos queremos loguear al host remoto, tipeamos sin necesidad de estar como root o invocando a sudo:
# ssh-keygen -t rsa
Rsa es el tipo de encryptación, pueden usar dsa si desean. Rsa loguea mas rápido pero es más seguro, dsa es a la inversa.
Lo anterior les va a producir algo como esto:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): ----> presionamos Enter
Enter same passphrase again: ---> Idem
Your identification has been saved in /root/.ssh/id_rsa. ---> yo estaba logueado como root, aca les puede aparecer su usuario
Your public key has been saved in /root/.ssh/id_rsa.pub. ---> Idem.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx host@local
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| . . |
| . + . o|
| . S O o .o|
| + + o .oo|
| .. . . .o|
| .o . o+|
| .. . oE|
+-----------------+
La key fingerprint es una combinación de números y letras
2. Ahora efectuamos los siguientes comandos. En donde dice "host" va el nombre del usuario "remoto" va la IP del host al que nos queremos loguear, por ejemplo [email protected]:
host@local: ssh host@remoto mkdir -p .ssh
host@remoto password: (aca tipean la password del host remoto)
host@local: cat .ssh/id_rsa.pub | ssh host@remoto 'cat >> .ssh/authorized_keys'
host@remoto password:
3. Con esto bastaría, prueben ahora loguearse. Algo más que se puede hacer para que sea todavía más practico es editar los alias de la bash (bash es el tipo de shell, al igual que sh o dash). El archivo se ubica en /home/user/.bashrc para los que esten con user común o /root/.bashrc para los que esten como root. La línea de texto va a ser añadida al final del archivo. Mi editor de preferencia es nano y yo voy a poner que me quiero loguear a proliant. Los alias son comandos que pueden ser creados por uno mismo, tambien pueden crearse algo con su gestor de paquetes de la misma manera
nano /home/user/.bashrc
alias proliant='ssh host@remoto'
Cerramos el archivo y en la terminal efectuamos el siguiente comando para que tenga efecto la mod (en la mayoria de los casos es bash la shell predeterminada:
/bin/bash
4. Probamos lo anterior introduciendo el comando que craeamos bajo alias:
# proliant
Y eso es todo, con esto conseguimos una forma más cómoda para loguearse por ssh.
Un dato que por ahi le sirva a alguno: cuando busquen tutos de como hacer las cosas, si aparece el signo "$" antes del comando significa que está siendo ejecutado como user, si aparece "#" es que está siendo ejecutado como root. Y los "#" que aparecen antes de una línea de texto en un archivo significa que están comentadas, por ende no tienen efecto a menos que la proceda un "!", esto se suele usar en los scripts y se denomina shabang, con eso se indica en que shell se va a efectuar, ej: #!/bin/bash".
ACLARACION: esto NO DEJA SIN PASSWORD al logueo por SSH, solamente la máquina que tenga la key fingerprint que está alojada en el host remoto en .ssh/authorized_keys. De otra manera NO puede loguearse ninguna otra persona sin tipear la password.
Saludos!

