Secure Shell Tutorial
Empezando con Secure Shell
Buscar..
Observaciones
El SSH (Secure Shell) es un protocolo criptográfico para la comunicación punto a punto a través de la red insegura (Internet). Hace obsoletos los viejos protocolos utilizados en los viejos tiempos ( rlogin , rsh , telnet ).
Se usa comúnmente para conectarse a servidores remotos, máquinas virtuales o contenedores en el centro de datos o en su nube privada (motor de cómputo de Google, AWS, ...). Pero también se usa comúnmente junto con git para acceder y actualizar su repositorio de forma segura y fácil usando claves públicas en lugar de contraseñas.
También debe mencionar cualquier tema grande dentro de ssh, y vincular a los temas relacionados. Dado que la Documentación para ssh es nueva, es posible que deba crear versiones iniciales de los temas relacionados. QUE HACER
Versiones
| Versión | Notas de lanzamiento | Fecha de lanzamiento |
|---|---|---|
| OpenSSH 7.3p1 | Ultima versión | 2016-08-01 |
| OpenSSH 7.2p2 | 2016-03-09 | |
| OpenSSH 7.1p2 | 2016-01-14 | |
| OpenSSH 7.1 | 2015-08-21 | |
| OpenSSH 7.0 | 2015-11-08 | |
| OpenSSH 6.9 | 2015-07-01 | |
| OpenSSH 6.8 | 2015-03-18 |
Instalación o configuración
La versión gratuita de la implementación del protocolo SSH, OpenSSH está disponible en todas las distribuciones de Linux. Se compone de los paquetes de servidor y cliente.
Instalación
En Linux basado en Debian, puede instalar openssh usando
# apt-get install openssh-server openssh-client
En RHEL / CentOS necesitas usar yum :
# yum install openssh-server openssh-clients
Fedora actual está usando dnf lugar de yum .
En Arch Linux, use pacman:
# pacman -S openssh
En OSX, el openssh ya debería estar instalado.
Si desea utilizar una versión más reciente, debe instalar la openssh de brew:
# brew install openssh --with-brewed-openssl --with-keychain-support
TODO Instrucciones para Windows
Preparar
El cliente openssh no necesita ninguna configuración especial y está listo para usar justo después de la instalación. Puede intentar ejecutar ssh remote , donde el remote es el host remoto que ejecuta ssh server.
El servidor openssh generalmente se inicia después de la instalación y se aplica la configuración predeterminada. Si no, puede iniciarlo en sistemas basados en systemd usando
En Linux basado en Debian con systemd:
# systemctl start ssh
En RHEL / CentOS / Fedora y Arch Linux:
# systemctl start sshd
O en sistemas upstart utilizando
# service sshd start
Configuración
El openssh tiene archivos de configuración en /etc/ssh/ . El cliente también está leyendo la configuración del cliente en ~/.ssh/config . El servidor está utilizando un archivo sshd_config , que contiene la mayoría de los valores predeterminados y contiene pares simples de clave-valor. Ejemplo:
Protocol 2
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
X11Forwarding yes
Subsystem sftp /usr/libexec/openssh/sftp-server
Creando tu clave SSH
Puede crear su clave ssh usando ssh-keygen, es un programa que forma parte de la instalación de ssh. Para hacerlo solo ejecútalo y sigue las instrucciones en pantalla.
Aquí hay un ejemplo:
$ ssh-keygen
Generating public/private rsa key pair.
El directorio predeterminado donde se guardará el par de claves ssh se encuentra dentro de la carpeta .ssh en su directorio de inicio (puede cambiar esto especificando una ruta válida) y el nombre predeterminado para el par de claves es id_rsa para la clave privada e id_rsa.pub para la clave pública:
Enter file in which to save the key (/home/nasreddine/.ssh/id_rsa): /home/my_folder/my_ssh_key
Puede proteger su clave SSH de un uso no autorizado ingresando una contraseña. Esto es opcional pero se recomienda que use una frase de contraseña. Tenga en cuenta que, al igual que con cualquier otro programa de comando, al ingresar su contraseña no mostrará nada en la pantalla, pero se está grabando:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Una vez que ingrese su contraseña, ssh-keygen generará una clave y la guardará en la ruta que eligió:
Your identification has been saved in /home/my_folder/my_ssh_key.
Your public key has been saved in /home/my_folder/my_ssh_key.pub.
Hemos terminado Ahora nuestra tecla ssh está lista para su uso.
Cómo SSH en una máquina
Para iniciar sesión en la cuenta de un usuario en la máquina con SSH, puede usar el comando ssh username@ip_address . Se le pedirá una contraseña. Si escribe la contraseña correcta, se lo conectará al shell de ese usuario en esa máquina. De lo contrario, volverá a solicitar la contraseña.
Por ejemplo
root@dev10:~# ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-31-generic x86_64)
Last login: Fri Jul 22 18:33:27 2016 from 10.11.50.10
root@dev2:~#
Si desea usar una clave ssh específica para conectarse a una máquina, use ssh -i /path/to/ssh_secret_key username@host
Cuando se conecte a una máquina por primera vez, le pedirá que verifique la huella digital de la máquina de destino. Este es un mecanismo de seguridad para evitar un ataque de hombre en el medio . Puede ver la huella digital de la máquina de destino emitiendo este comando en la máquina de destino.
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
Puede escribir "sí" si ambos son iguales. Se procederá a la solicitud de contraseña.
Ejemplo:
root@dev10:~# ssh [email protected]
The authenticity of host '10.11.50.3 (10.11.50.3)' can't be established.
ECDSA key fingerprint is dd:a3:de:cd:5b:01:cd:0b:b6:bc:b3:09:c2:c8:1a:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.11.50.3' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Fri Jul 22 17:45:09 2016 from 10.11.1.71
root@dev2:~#
Agregando su clave pública a la lista de claves autorizadas del usuario del servidor
Para poder ssh en un servidor, la clave pública de su identidad debe agregarse a la lista de claves de confianza. Más comúnmente esto se hace por usuario:
ssh-copy-id -i ~/.ssh/<identity>.pub <user>@<hostname>
Lo que también se puede hacer manualmente:
cat ~/.ssh/<identity>.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
Después de hacer eso, debería poder iniciar sesión sin necesidad de proporcionar la contraseña del usuario al pasar el archivo de identidad a la llamada ssh .
Conectando desde script usando contraseña
Cuando realmente necesita un script de conexión ssh , no funciona la conexión de la contraseña al comando ssh ( echo passw0rd | ssh host ). Esto se debe a que la contraseña no se lee desde la entrada estándar, sino directamente desde TTY (teletipo, teletipo, escritor por teletipo por razones históricas).
Pero hay sshpass herramienta sshpass que soluciona este problema. Puede leer la contraseña de parámetro, archivo o variable de entorno. ¡Pero tenga en cuenta que ninguna de estas opciones no cumple con los requisitos de seguridad para las contraseñas!
$ sshpass -p passw0rd ssh host
$ sshpass -f /secret/filename ssh host
$ SSHPASS=passw0rd sshpass -e ssh host
Los demás usuarios pueden ver las opciones de la línea de comandos en ps (durante el tiempo de ejecución se enmascara, pero no durante la hora de inicio y no puede confiar en ello):
... 23624 6216 pts/5 Ss Aug30 0:00 \_ /bin/bash
... 12812 1988 pts/5 S+ 08:50 0:00 | \_ sshpass -p passw0rd ssh host
... 45008 5796 pts/15 Ss+ 08:50 0:00 | \_ ssh host
Tenga en cuenta que las variables de entorno de un proceso también son accesibles por otros procesos en el sistema utilizando el archivo /proc/PID/environ .
Finalmente, almacenar la contraseña en el archivo puede parecer la mejor idea posible, pero aún así usar las claves como se describe en los otros ejemplos es la forma preferida de usar ssh .
Archivo de configuración
Los archivos de configuración de OpenSSH se utilizan para la configuración que debe aplicarse cada vez que se ejecuta el cliente ssh. La mayoría de las opciones de la línea de comandos son posibles para poner en los archivos de configuración.
OpenSSH usa la configuración de las siguientes fuentes en orden:
- Opciones de línea de comando
- Archivo de configuración del usuario
~/.ssh/config - Archivo de configuración de todo el sistema
/etc/ssh/ssh_config
Las opciones de configuración se enumeran una por una en los archivos de configuración.
# This is a comment.
# Parameter can be specified like this, separated with white space.
StrictHostKeyChecking ask
# Or parameter key and value may be separated with white space and =.
ForwardX11 = yes
# The parameter value can be quoted if it contains white space.
IdentityFile "/file system/path with/white space"
La lista completa de posibles parámetros de configuración está disponible aquí .
Una de las características más útiles del archivo de configuración es que puede dividirse en función del nombre o la dirección del host. De esta manera puede tener diferentes configuraciones para diferentes hosts.
# Based on host name.
Host host1.domain.com
User user1
Host host2.domain.com
User user2
# Or wildcard matching name or ip.
Host *elastic-cloud.com 10.201.4.?
User user3
Agente de SSH
Si ha establecido una frase de contraseña larga y no desea seguir ingresándola cada vez que quiera conectarse al servidor, puede usar SSH-Agent para almacenar su frase de contraseña mientras está conectado en su computadora.
Inicie el ssh-agent en el fondo:
eval "$(ssh-agent -s)"
# Agent pid 59566
Y agregue su clave al ssh-agent, se le pedirá que ingrese su contraseña:
ssh-add ~/.ssh/matrix.ac
# Enter passphrase for /home/osaka/.ssh/matrix.ac:
# Identity added: /home/osaka/.ssh/matrix.ac (/home/osaka/.ssh/matrix.ac)
Hecho. Ahora conéctese con ssh [email protected] y no debería tener que ingresar su contraseña. Puede ampliar esto utilizando programas como gnome-keyring / seahorse, keychain y otros administradores de claves.
