Secure Shell (SSH) es una de las herramientas de Linux más omnipresentes. Proporciona conexiones seguras entre estaciones de trabajo, servidores, conmutadores administrados, enrutadores y cualquier cantidad de otros dispositivos. Linux y macOS incluyen SSH y son fáciles de agregar a Windows.
Este artículo proporciona una revisión rápida Uso estándar de SSHEl enfoque principal es brindar orientación sobre la ejecución de comandos de una sola vez a través de una conexión SSH y cómo tunelizar otras aplicaciones, he agregado una sección adicional sobre el uso scp
Copie archivos de forma segura.
Tabla de Contenidos
Configuración de requisitos previos
Hay muchos artículos sobre la configuración de SSH, por lo que este artículo trata sobre el uso de SSH en lugar de configurarlo. Hice algunas suposiciones sobre su configuración:
- El servicio SSH está instalado y ejecutándose en el servidor de destino.
- El cliente SSH está instalado en la computadora local.
- Esta Configuración del cortafuegos Permitir SSH.
- Está utilizando el puerto SSH estándar 22/tcp.
- En estos ejercicios, la autenticación basada en claves no está configurada, por lo que SSH le solicita una contraseña.
Para que conste, se recomienda encarecidamente la autenticación basada en claves (de hecho, casi hipotética en este punto). Los intentos de conexión de autenticación basada en claves son más rápidos, más fáciles de automatizar y se consideran más seguros. Lea SSH sin contraseña usando pares de claves públicas y privadas para obtener orientación sobre esta configuración crítica, u Ocho formas de proteger el acceso SSH en su sistema para obtener consejos generales.
Conéctese a través de SSH normal
Comenzaré con lo que podría considerarse una conexión SSH estándar. Este comando inicia SSH y especifica la cuenta de usuario con la que el servidor remoto debe autenticarse y la identidad del servidor de destino (nombre de host o dirección IP):
$ ssh user01@server01
Un intento de conexión desencadena un desafío de contraseña. Esta es la contraseña para la cuenta de usuario especificada en el sistema remoto.
Una vez autenticado, el sistema remoto muestra un símbolo del sistema y brinda la capacidad de ejecutar comandos o acceder a recursos con cualquier permiso que tenga el usuario que se conecta. En algunos sistemas, la configuración de seguridad evita que el usuario raíz se conecte a través de SSH, por lo que es posible que se requieran privilegios elevados en este momento.
Se ha establecido una sesión interactiva y ahora puede realizar tareas administrativas.
[Learn how to install applications on Linux by downloading this eBook. ]
Ejecutar comandos a través de SSH
¿Qué sucede si lo único que necesita hacer a través de la conexión SSH es ejecutar un comando rápido? Probablemente no desee conectarse y autenticarse, ejecutar comandos y desconectarse por separado.
Recuerde que, a menos que haya configurado la autenticación basada en claves, se le pedirá una contraseña en estos ejemplos (que probablemente debería hacerlo, pero eso está más allá del alcance de este artículo).
SSH permite a los usuarios agregar los comandos deseados directamente a los intentos de conexión. El comando se ejecuta y la conexión se cierra.
La sintaxis básica es ssh user01@server01 "command"
.
Por ejemplo, puede verificar el estado de instalación de un paquete:
$ ssh user01@server01 "rpm -qa | grep nano"
Tal vez necesite verificar los archivos de registro en el servidor remoto en busca de mensajes «fallidos». Puedes intentar algo como esto:
$ ssh user01@server01 "cat /var/log/secure" | grep -i fail
O puede que necesite extraer archivos de un sistema remoto. Además, tienes que comprimir el archivo:
$ ssh user01@server01 "tar -czf /projects" > projectsbackup.tar.gz
Tenga en cuenta que puede utilizar scp
para esta tarea (ver abajo).
[ Download the Bash shell scripting cheat sheet. ]
Si necesita elevar sus privilegios en el otro lado de la conexión SSH, use sudo
y luego fuerce el uso de un pseudo-terminal -t
usa esto si sudo
Se le pedirá que ingrese su contraseña. El comando se ve así:
$ ssh -t user01@server01 "sudo yum install nano"
Túnel otras aplicaciones
SSH puede proporcionar otras aplicaciones con conexiones autenticadas y cifradas a dispositivos remotos.
Virtual Network Computing (VNC) es una forma útil de conectarse a un escritorio remoto cuando necesita una interfaz gráfica de usuario (GUI) para completar una tarea.
No todos los productos VNC brindan cifrado para la transmisión de datos (sin embargo, generalmente se usan en la etapa de autenticación). Puede hacer un túnel SSH en su conexión VNC para mayor privacidad.
Necesita reenviar puertos para que esto funcione. Escribe lo siguiente:
$ ssh -L 5901:localhost:5901 -N -f -l user01@server01
Inicie un cliente VNC y conéctese a localhost:5901
ahora reenviando al servidor remoto.
Aquí hay una descripción de las opciones en el comando anterior:
-L
: reenvía el puerto al dispositivo de destino. En este caso, es una asignación directa de 5901 a 5901 (el número de puerto VNC predeterminado).-N
: solo reenvía el puerto sin ejecutar el comando.-f
: Coloque SSH en segundo plano (suelte el símbolo del sistema) cuando se establezca la conexión.-l
: esta opción especifica el usuario SSH remoto y el servidor de destino.
Asimismo, puede establecer un túnel HTTP sobre SSH a un imagen Usa un comando como este:
$ ssh -L 11000:localhost:80 -N -f -l user01@server01
A continuación, inicie un navegador web y conéctese a http://localhost:11000/images
.
usar scp
Si solo desea copiar archivos, no tiene que usar una conexión SSH completa.En su lugar, puede utilizar scp
Los comandos son más fáciles de realizar el mismo objetivo.
Copiar file.txt
llegar /projects
directorio en el sistema remoto server01
Tipos de:
$ scp file.txt server01:/projects
Alternativamente, si necesita copiar un archivo desde el sistema remoto al directorio actual en el sistema, escriba:
$ scp server01:/projects/file.txt .
Glen Newell tiene un artículo sobre el uso scp
Pedido.
envolver
La mayoría de los administradores de Linux están familiarizados con el establecimiento de conexiones SSH para la administración remota.corremos ssh
comando, verificar y luego completar una serie de tareas. Una vez completada la tarea, nos desconectamos.
Este modo es útil si necesita realizar múltiples configuraciones o ejecutar manualmente una serie de comandos. Sin embargo, a veces solo necesita ejecutar un comando o script. SSH permite conexiones rápidas para autenticarse, ejecutar comandos específicos y desconectarse. Finalmente, SSH también puede tunelizar otros protocolos, como VNC o HTTP, para proporcionar un nivel de seguridad más allá del proporcionado por la aplicación de soporte. Explore la increíble flexibilidad de SSH y descubra nuevas formas de utilizar esta antigua herramienta.