Conexión remota con Secure Shell (SSH) en Ubuntu 18.04
Tabla de contenido:
- Prerrequisitos
- Ubicación del archivo de configuración SSH
- Estructura y patrones del archivo de configuración SSH
- Ejemplo de archivo de configuración SSH
- Ejemplo de archivo de configuración SSH compartido
- Anular la opción de archivo de configuración SSH
- Conclusión
Una opción sería crear un alias bash para cada conexión de servidor remoto. Sin embargo, hay otra solución mucho mejor y más simple para este problema. OpenSSH le permite configurar un archivo de configuración por usuario donde puede almacenar diferentes opciones de SSH para cada máquina remota a la que se conecta.
Esta guía cubre los conceptos básicos del archivo de configuración del cliente SSH y explica algunas de las opciones de configuración más comunes.
Prerrequisitos
Asumimos que está utilizando un sistema Linux o macOS con el cliente OpenSSH instalado.
Ubicación del archivo de configuración SSH
El archivo de configuración del lado del cliente OpenSSH se denomina
config
y se almacena en el directorio
.ssh
en el directorio de inicio del usuario.
El directorio
~/.ssh
se crea automáticamente cuando el usuario ejecuta el comando
ssh
por primera vez. Si el directorio no existe en su sistema, créelo usando el siguiente comando:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
De manera predeterminada, el archivo de configuración SSH puede no existir, por lo que es posible que deba crearlo con el comando táctil:
touch ~/.ssh/config
Este archivo debe ser legible y escribible solo por el usuario, y no debe ser accesible por otros:
Estructura y patrones del archivo de configuración SSH
El archivo de configuración SSH toma la siguiente estructura:
Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value
El contenido del archivo de configuración del cliente SSH está organizado en secciones (secciones). Cada sección comienza con la directiva
Host
y contiene opciones SSH específicas que se utilizan al establecer una conexión con el servidor SSH remoto.
La sangría no es necesaria, pero se recomienda ya que facilita la lectura del archivo.
La directiva
Host
puede contener un patrón o una lista de patrones separados por espacios en blanco. Cada patrón puede contener cero o más caracteres que no sean espacios en blanco o uno de los siguientes especificadores de patrones:
-
*
- Coincide con cero o más caracteres. Por ejemplo,Host *
coincide con todos los hosts, mientras que192.168.0.*
Coincide con hosts en la subred192.168.0.0/24
.?
- Coincide exactamente con un personaje. El patrón,Host 10.10.0.?
coincide con todos los hosts en10.10.0.
rango.!
- Cuando se usa al comienzo de un patrón, niega la coincidencia. Por ejemplo,Host 10.10.0.* !10.10.0.5
coincide con cualquier host en la subred10.10.0.5
excepto10.10.0.5
.
El cliente SSH lee el archivo de configuración stanza por stanza, y si coinciden más de un patrón, las opciones de la primera stanza coincidente tienen prioridad. Por lo tanto, se deben proporcionar más declaraciones específicas del host al comienzo del archivo y anulaciones más generales al final del archivo.
Puede encontrar una lista completa de las opciones de ssh disponibles escribiendo
man ssh_config
en su terminal o visitando la página de man ssh_config.
El archivo de configuración SSH también es leído por otros programas como
scp
,
sftp
y
rsync
.
Ejemplo de archivo de configuración SSH
Ahora que hemos cubierto lo básico del archivo de configuración SSH, veamos el siguiente ejemplo.
Normalmente, cuando se conecta a un servidor remoto a través de SSH, debe especificar el nombre de usuario remoto, el nombre de host y el puerto. Por ejemplo, para iniciar sesión como un usuario llamado
john
en un host llamado
dev.example.com
en el puerto
2322
desde la línea de comando, debe escribir:
ssh [email protected] -p 2322
Para conectarse al servidor utilizando las mismas opciones que se proporcionan en el comando anterior simplemente escribiendo
ssh dev
, coloque las siguientes líneas en su archivo
"~/.ssh/config
:
Host dev HostName dev.example.com User john Port 2322
Ahora, cuando escriba
ssh dev
, el cliente ssh leerá el archivo de configuración y usará los detalles de conexión que se especifican para el host de desarrollo:
Ejemplo de archivo de configuración SSH compartido
Este ejemplo proporciona información más detallada sobre los patrones de host y la precedencia de opciones.
Tomemos el siguiente archivo de ejemplo:
Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes
-
Cuando escribe
ssh targaryen
, el cliente ssh lee el archivo y aplica las opciones de la primera coincidencia, que esHost targaryen
. Luego comprueba las siguientes estrofas una por una para ver si hay un patrón coincidente. La siguiente coincidencia esHost * !martell
(es decir, todos los hosts exceptomartell
), y aplicará la opción de conexión desde esta estrofa. La última definiciónHost *
también coincide, pero el cliente ssh solo tomará la opción deCompression
porque la opciónUser
ya está definida en laHost targaryen
delHost targaryen
.La lista completa de opciones utilizadas cuando escribe
ssh targaryen
es la siguiente:HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes
Al ejecutar
ssh tyrell
los patrones de host coincidentes son:Host tyrell
,Host *ell
,Host * !martell
yHost *
. Las opciones utilizadas en este caso son:HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes
HostName 192.168.10.50 User oberyn Compression yes
Para todas las demás conexiones, el cliente ssh utilizará las opciones especificadas en las secciones
Host * !martell
yHost *
.
Anular la opción de archivo de configuración SSH
El cliente ssh lee su configuración en el siguiente orden de precedencia:
- Opciones especificadas desde la línea de comandos. Opciones definidas en
~/.ssh/config
Opciones definidas en/etc/ssh/ssh_config
.
Host dev HostName dev.example.com User john Port 2322
y desea utilizar todas las demás opciones, pero para conectarse como usuario
root
lugar de
john
simplemente especifique el usuario en la línea de comando:
ssh -o "User=root" dev
La opción
-F
(
configfile
) le permite especificar un archivo de configuración alternativo por usuario.
Para indicarle al cliente
ssh
que ignore todas las opciones especificadas en el archivo de configuración ssh, use:
ssh -F /dev/null [email protected]
Conclusión
Le hemos mostrado cómo configurar su archivo de configuración ssh de usuario. También es posible que desee configurar una autenticación basada en claves SSH y conectarse a sus servidores Linux sin ingresar una contraseña.
De forma predeterminada, SSH escucha en el puerto 22. Cambiar el puerto SSH predeterminado agrega una capa adicional de seguridad a su servidor al reducir el riesgo de ataques automáticos.
terminal sshLas extensiones de archivo controlan qué aplicación puede abrir un archivo
BearPup a veces quiere abrir un archivo en un programa y otras veces abrirlo en otro. Le pidió al foro de Answer Line una forma fácil de hacerlo.
BMP Wrap le permite ocultar archivos como imágenes BMP y enviar por correo electrónico cualquier tipo de archivo como archivo adjunto
Además de ocultar archivos dentro Archivos de imagen BMP, conversión de archivos para permitir que se envíen como archivos adjuntos de correo electrónico, BMP Wrap también se utiliza para cifrar archivos.
No se pudo guardar el archivo porque no se pudo leer el archivo de origen
Si no puede descargarlo y ve el appdatalocaltemp no se pudo guardar porque no se pudo leer el error del archivo fuente en Firefox, esto es lo que debe hacer.