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.

introduzca la descripción de la imagen aquí

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:

  1. Opciones de línea de comando
  2. Archivo de configuración del usuario ~/.ssh/config
  3. 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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow