Traducción(es): Deutsch – English – Français – Italiano – Español – Português Brasileiro
ToDo: combinar (y traducir) esta página y la del francés (más completa)
- Introducción
- Instalación
- Instalación del cliente
- Instalación del servidor
- Archivos de configuración
- Regenerar claves de host
- Inicio de sesión remoto
- Con contraseña
- Usar claves compartidas
- Administración de claves
- Utilizando GUI
- Seguridad
- Servidor SSH
- Buenas prácticas con servidor SSH
- Opciones de Configuración
- Utilidades externas
- Cliente SSH
- Buenas prácticas con Cliente SSH
- Funciones adicionales
- Ver archivos en la interfaz gráfica de usuario
- Comandos adicionales
- scp
- sftp
- modo de texto
- modo gráfico
- clusterssh
- ssh-agent y ssh-add
- llavero
- ssh-askpass
- libpam-usb
- Comandos remotos
- SSH a Debian desde otro sistema operativo
- Buenas prácticas de uso de SSH
- Solución de problemas
- desajuste de la versión de OpenSSL. Construido contra 1000105f, tiene 10001060
- SSH se cuelga
- con IPQoS 0x00
- Resolución con netcat
- Mantenga activa la conexión SSH
- Para Debian 7.servidor x
- Véase también
Introducción
SSH significa Shell seguro y es un protocolo para el inicio de sesión remoto seguro y otros servicios de red seguros en una red insegura1. Consulte Wikipedia-Secure Shell para obtener información más general y ssh, lsh-client o dropbear para las implementaciones de software SSH de las que OpenSSH es la más popular y la más utilizada 2. SSH reemplaza a telnet,rlogin y rsh sin cifrar y agrega muchas características.
En este documento utilizaremos el conjunto de comandos OpenSSH, también se asumirá que las siguientes dos variables están definidas:
remote_host=<the remote computer>remote_user=<your user name on $remote_host>
Por lo tanto, si desea usar las recetas a continuación, establezca primero estas variables en el nombre del equipo remoto y el nombre de usuario en ese equipo remoto. A continuación, cortar y pegar los comandos a continuación debe funcionar. remote_host también puede ser una dirección IP.
Instalación
Instalación del cliente
Normalmente el cliente se instala de forma predeterminada. Si no es suficiente correr como root:
apt install openssh-client
Instalación del servidor
El servidor permite conectarse de forma remota y se instala ejecutando como root:
apt install openssh-server
Archivos de configuración
Los archivos de configuración principales están en el directorio / etc / ssh :
-
ssh_config: archivo de configuración del cliente
-
sshd_config: archivo de configuración del servidor
Además, este directorio contiene los pares de claves privadas / públicas que identifican a su host :
- ssh_host_dsa_key
- ssh_host_dsa_key.pub
- ssh_host_rsa_key
- ssh_host_rsa_key.pub
Desde OpenSSH 5.73, está disponible un nuevo par de claves privadas / públicas:
- ssh_host_ecdsa_key
- ssh_host_ecdsa_key.pub
Desde OpenSSH 6.54, está disponible un nuevo par de claves privadas / públicas:
- ssh_host_ed25519_key
- ssh_host_ed25519_key.pub
Regenerar claves de host
rm /etc/ssh/ssh_host_*dpkg-reconfigure openssh-server
Inicio de sesión remoto
Con contraseña
Si desea iniciar sesión en remot remote_host como usuario remot remote_user, simplemente escriba
ssh $remote_user@$remote_host
y, a continuación, escriba su contraseña.
Si los nombres de usuario en el equipo local y el remoto son idénticos, puede eliminar la parte remot remote_user@y simplemente escribir
ssh $remote_host
Si es la primera vez que inicia sesión en el equipo remoto, ssh le preguntará si está seguro de que desea conectarse al equipo remoto. Responda ‘ sí ‘ después de verificar la huella digital del equipo remoto, escriba su contraseña y ssh lo conectará al host remoto.
Usar claves compartidas
Una de las funciones de ssh es usar un par de claves privadas/públicas para conectarse a un host remoto. También conocidas como claves SSH. Este método le permite iniciar sesión en un host remoto sin necesidad de escribir su contraseña cada vez. Para hacer esto, debe generar un par de claves privadas/públicas en su máquina local y depositar la clave pública en el host remoto.
Para generar la clave, utilice el programa ssh-keygen de la siguiente manera
ssh-keygen -t rsa
Este programa genera un par de claves privadas/públicas en el directorio~/.ssh. El programa primero pide los archivos de destino para las claves, que por defecto se encuentran en ~/.ssh. Después se solicita una frase de contraseña.
Nota: Recomendamos no dejar la contraseña vacía. Un atacante que se apodera de tu clave privada puede conectarse a los hosts donde depositaste tu clave pública, ya que la frase de contraseña está vacía. Elige una frase de contraseña larga y compleja.
Su clave privada es id_rsa (no se la dé a otra persona), su clave pública es id_rsa.pub.
Copia su clave pública a un host remoto con el comando ssh-copy-id
ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host
Ahora puede conectarse simplemente al host remoto y se solicita la fase de contraseña. Una vez hecho esto, se conecta al host remoto. En caso de una nueva conexión, la frase de contraseña no se vuelve a solicitar durante toda la sesión.
Administración de claves
Utilizando GUI
Opcionalmente, seahorse es una aplicación GNOME que administra fácilmente claves de cifrado y contraseñas a través de una Interfaz Gráfica de Usuario (GUI) intuitiva. Caballito de mar es capaz de hacer varias operaciones. Como crear claves SSH o PGP, configurarlas y almacenarlas en caché. Leer más.
Seguridad
Servidor SSH
De forma predeterminada, un servidor SSH es relativamente seguro. Con la ayuda de algunas buenas prácticas, opciones de configuración y utilidades externas, es posible hacerlo aún más difícil para ‘robots’ y crackers
Buenas prácticas con servidor SSH
-
Aplique las actualizaciones de seguridad de openssh-server lo antes posible. Lo que permite proteger contra agujeros de seguridad conocidos.
-
Active la autenticación de claves SSH solo con contraseñas/frases de contraseña. Desactive la autenticación solo con contraseña.
-
Considere el uso de fail2ban, que es un monitor de archivos de registro que prohíbe automáticamente una dirección IP después de un número predefinido de intentos de inicio de sesión fallidos. Que protege automáticamente contra ataques de fuerza bruta.
-
Más buenas prácticas para usar ssh en https://lackof.org/taggart/hacking/ssh/
Opciones de Configuración
Se debe editar el archivo/etc / ssh / sshd_config para cambiar los parámetros y luego reiniciar el servidor ssh con
service ssh restart
-
Desactive el uso de contraseñas para la autenticación (no de autenticación de contraseña).
-
Desactive usando la cuenta raíz (no de registro de Permitroot).
-
Solo permitir el inicio de sesión de ciertos usuarios o grupos (AllowUsers y AllowGroups)
Las opciones AllowUsers y AllowGroups no mejoran la seguridad de un servidor SSH. Pero en algunos casos su uso permite resistir un poco más de tiempo el ataque de fuerza bruta.
Utilidades externas
-
fail2ban: permite incluir automáticamente en la lista negra IPs que intentan forzar brutalmente un servidor SSH con la ayuda de iptables.
-
denyhosts : como fail2ban, denyhosts permite bloquear direcciones IP que intentan forzar una conexión a ssh. Pero a diferencia de fail2ban, no usa iptables, sino el archivo /etc/hosts.negar.
Cliente SSH
Buenas prácticas con Cliente SSH
-
Aplique las actualizaciones de seguridad de openssh-client tan pronto como sea posible. Lo que permite proteger contra agujeros de seguridad conocidos.
-
Utilice la autenticación de claves SSH. En lugar de autenticación con contraseña.
-
Agregue contraseñas/frases de contraseña seguras a sus claves SSH. Esto reduce el riesgo de ataques de fuerza bruta.
Funciones adicionales
Ver archivos en la interfaz gráfica de usuario
En administradores de archivos como Konqueror, Dolphin, Krusader y Midnight Commander puede usar FISH para ver archivos en una interfaz gráfica de usuario utilizando:
fish://username@server_name_or_ip
Comandos adicionales
scp
scp es una utilidad de línea de comandos que permite transferir archivos entre dos máquinas.
- Enviar un archivo:
scp $source_file $remote_user@$remote_host:$destination_file
- Copiar un archivo a la máquina local:
scp $remote_user@$remote_host:$source_file $destination_file
sftp
modo de texto
modo gráfico
clusterssh
ssh-agent y ssh-add
ssh-agent es una herramienta útil para administrar las claves privadas y sus contraseñas. La mayoría de los entornos de escritorio en Debian ya estarán configurados para ejecutar ssh-agent (a través de systemd user services o /etc/X11/Xsession), por lo que no debería necesitar iniciarlo manualmente.
# Check if ssh-agent is runningenv | grep -i ssh
Aún tendrá que decirle al agente que administre sus claves.
# List keys managed by the agentssh-add -l# Add your ssh keyssh-add ~/.ssh/your_private_key
Cuando se necesita por primera vez una clave privada, se le solicita su contraseña. ssh-agent recordará la clave para que no se le pregunte a su contraseña más.
llavero
Llavero, proporcionado por el paquete llavero, es un script de shell que permite usar el agente ssh en varias sesiones del mismo equipo. En efecto, después del primer inicio, ssh-agent crea un conector permanente que permite la comunicación con ssh. Solo se hace referencia a este socket en el entorno de la sesión en la que se inició el agente. Keychain permite detectar el agente y propagar el acceso a este agente a otras sesiones; esto permite utilizar una sola instancia de ssh-agent por usuario en una máquina.
ssh-askpass
ssh-askpass es una utilidad para simplemente preguntar la contraseña de una clave privada al usarla. Existen varias implementaciones:
-
x11-ssh-askpass : versión para X11
-
kaskpass : integración de ssh-askpass en el entorno de KDE
-
ssh-askpass-gnome : integración de ssh-askpass en el entorno Gnome
libpam-usb
libpam-usb es una utilidad (solo disponible hasta Debian Jessie) que permite la autenticación con una memoria USB. Este paquete incluye una utilidad útil: pamusb-agent. Esta utilidad, una vez configurada correctamente, permite cargar las llaves SSH presentes en la memoria USB una vez que está conectada y descargarlas cuando está desconectada.
Comandos remotos
Si solo desea ejecutar un comando en el equipo remoto, no necesita iniciar sesión. Puede decirle a ssh que ejecute el comando sin iniciar sesión, por ejemplo,
ssh $remote_user@$remote_host 'ls *.txt'
lista todos los archivos con extensión .txt en el ordenador remoto. Esto funciona con comillas simples…»como se muestra aquí, con comillas dobles»…»y sin comillas. Sin embargo, puede haber diferencias entre estos tres casos, que aún no se han documentado aquí.
SSH a Debian desde otro sistema operativo
-
PuTTY es una aplicación emuladora de terminal que puede actuar como cliente para ssh. Es ampliamente utilizado por los usuarios de Windows.
-
Wikipedia tiene Comparison_of_SSH_clients
Buenas prácticas de uso de SSH
Debe leer esto: https://lackof.org/taggart/hacking/ssh/
Este documento resume muchas buenas prácticas que los usuarios regulares de SSH deben seguir para evitar comprometer la seguridad de sus cuentas (y de toda la máquina al mismo tiempo).
Configure su ~/.ssh / config para enviar solo la clave correcta.
Host master.debian.org User account IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes
Solución de problemas
desajuste de la versión de OpenSSL. Construido contra 1000105f, tiene 10001060
Si recibe un mensaje de error como este al iniciar el demonio ssh, debe ejecutar:
apt install openssh-server openssh-client
Véase también el fallo # 732940.
SSH se cuelga
Problema
Está intentando usar SSH en un equipo remoto. Pero durante el inicio de sesión SSH, la sesión se bloquea/congela indefinidamente. Por lo tanto, no se le presenta el símbolo del sistema. Y no puede usar ningún comando SSH Al usar el modo de depuración SSH, la sesión se cuelga en esta línea debug2: canal 0: abrir confirme rwindow 0 rmax 32768
Posible causa
Con algunos routers detrás de NAT y al usar OpenSSH. Durante la configuración de la sesión, después de que se ha dado la contraseña, OpenSSH establece el campo TOS (tipo de servicio) en el datagrama IP. El router se atraganta con esto. El efecto es que su sesión SSH se cuelga indefinidamente. En otras palabras, los comandos o conexiones SSH rara vez funcionan o no funcionan en absoluto. Resolución
con IPQoS 0x00
Hasta que el fabricante del router arregle su firmware. Aquí hay una opción para resolver ese problema:
-
Compruebe que la versión de openssh-server y openssh-client sea 5.7 o más reciente. Por ejemplo, la siguiente resolución debería funcionar con Debian 7.11 Wheezy o más reciente, ya que viene con OpenSSH versión 6.0.
-
Edite uno de los dos archivos siguientes ubicados en:
~/.ssh/config
o
/etc/ssh/ssh_config
Nota: el archivo de configuración es por usuario y el archivo ssh_config es para todos los usuarios y para todo el sistema. Si no está seguro, edite el archivo de configuración de usuario apropiado.
Contenido del archivo anterior
Host *
Contenido del archivo posterior
Host * IPQoS 0x00
- Si tiene alguna ventana(s) de Terminal/consola ya abierta. Ciérralos por completo. Al hacerlo, se cerrará cualquier sesión SSH activa.
-
No es necesario reiniciar OpenSSH o su Debian. Intente de nuevo SSH en cualquier servidor remoto. Debería funcionar. Hecho, ha solucionado correctamente ese problema
Gracias a Joe y catmaker por este consejo
Documentación conexa en https://www.openssh.com/txt/release-5.7
Resolución con netcat
ADVERTENCIA: Se sugiere considerar usar esa otra resolución con IPQoS 0x00 en lugar de usar la opción netcat/ProxyCommand nc %h %p. Porque IPQoS 0x00 es la opción OpenSSH incorporada oficial. También IPQoS 0x00 es una forma más directa de resolver ese problema, y una opción potencialmente más segura. Porque IPQoS 0x00 utiliza el cifrado incorporado de SSH para transferencias seguras. Compare con las transferencias no cifradas de netcat. Fuentes: 1 2. Si elige utilizar la opción netcat/ProxyCommand nc %h %p, siga leyendo.
Otra opción para resolver el problema de bloqueo de SSH es usar ProxyCommand nc % h % p. Para hacerlo, siga los mismos pasos que la resolución anterior con IPQoS 0x00. Pero reemplace IPQoS 0x00 por
ProxyCommand nc %h %p
Mantenga activa la conexión SSH
Por razones de seguridad, de forma predeterminada, una conexión SSH se cierra automáticamente después de un período de tiempo establecido. Pero en algunos casos quieres mantener esa conexión abierta. Como almacenamiento en la nube a través de conexión SSH.
ADVERTENCIA: Antes de activar la opción mantener activa la conexión SSH. Se sugiere considerar asegurar tanto el Cliente SSH como el Servidor SSH. Porque, por ejemplo, existe el riesgo de que si los usuarios dejan su sesión SSH abierta y su equipo desatendido y desbloqueado. Cualquiera puede acercarse a ese equipo y luego explotar esa conexión SSH abierta. Por ejemplo, usando el comando passwd, y cambie la contraseña. Y así obtener acceso al servidor. En otras palabras, antes de activar la opción mantener activa la conexión SSH, se sugiere usar su mejor juicio y buenas prácticas de seguridad.
Para Debian 7.servidor x
Pasos para mantener activa la conexión SSH.
En el servidor SSH edite el archivo /etc/ssh/sshd_config y agregue lo siguiente en la parte inferior de ese archivo.
# Keep client SSH connection alive by sending every 300 seconds a small keep-alive packet to the server in order to use ssh connection. 300 seconds equal 5 minutes.ClientAliveInterval 300 # Disconnect client after 3333 "ClientAlive" requests. Format is (ClientAliveInterval x ClientAliveCountMax). In this example (300 seconds x 3333) = ~999,900 seconds = ~16,665 minutes = ~277 hours = ~11 days.ClientAliveCountMax 3333
Como usuario root reinicie el servicio SSH:
service sshd restart
Tenga en cuenta que en sistemas Debian recientes (por ejemplo, Wheezy 7 con actualizaciones actuales a partir de noviembre. 2015), el comando anterior ya no funciona y devuelve el error:
sudo service sshd restartsshd: unrecognized service
Sin embargo, los siguientes trabajos:
sudo service ssh restart Restarting OpenBSD Secure Shell server: sshd.
Véase también
-
multiplexor de terminales de pantalla con emulación de terminales VT100/ANSI
-
tmux-multiplexor de terminales alternativo
Categorías Categorías de redes Software