Comandos ssh scp

De nuxpy
Ir a la navegación Ir a la búsqueda

SSH (Secure Shell) es un protocolo y servicio que permitir la conexión, transferencia de archivos y gestión remota de un equipo a otro, siempre y cuando el equipo destino tenga disponible el servicio de escucha para tal fin, normalmente el puerto de escucha es el número 22 mediante por el cual se realiza el enlace de conexión.

Igualmente, SSH dispone de gestión de llaves públicas y privadas para gestionar la conexión de forma segura y personalizada.

ssh

La conexión sencilla vía SSH desde un equipo PC a otro sería de la siguiente manera:

ssh usuario@maquina_destino

En el ejemplo anterior se realiza a través del puerto 22, puerto por defecto, sin embargo, este pudiera ser cambiado. Si por ejemplo se ha cambiado el puerto de escucha del número 22 al número 2200, la conexión se realizaría de la siguiente manera:

ssh -p 2200 usuario@maquina_destino

scp

SSH también permite hacer transferencia de archivos, directorios de manera recursiva y otras funciones. Si se desea copiar archivos desde una PC a otra, el comando sería parecido al siguiente:

scp archivo.txt usuario@maquina_destino:

Este comando copiaría el archivo archivo.txt desde una máquina a una máquina destino, por defecto copiaría dicho archivo en el home del usuario usuario. La copia de más de un archivo sería:

scp archivo1.txt archivo2.txt usuario@maquina_destino:

Donde se menciona maquina_destino, también se pudiera reemplazar por una dirección IP como en el siguiente ejemplo:

scp archivo1.txt archivo2.txt usuario@192.168.0.4:

Si se desea copiar todos los archivos del directorio donde está el usuario posicionado:

scp * usuario@maquina_destino:

La copia de un directorio de manera recursiva se haría de la siguiente manera:

scp -r directorio/ usuario@maquina_destino:

Igualmente, el caso de reemplazar maquina_destino por una dirección IP específica es en cualquiera de los casos que se use la conexión vía SSH.

Cuando se realizan copias con un puerto diferente al 22, se realizarían todos los mismos comandos mencionados, sin embargo con el puerto cambiado sería de la siguiente manera:

scp -P 2200 * usuario@maquina_destino:

Copiar un directorio de manera recursiva mediante un puerto específico:

scp -P 2200 -r directorio/ usuario@servidor:

Todos los ejemplos de copias se han hecho en el sentido:

   máquina local -> máquina remota

Pero también se puede hacer de manera contraria:

   máquina remota -> máquina local

Tal como el siguiente ejemplo:

scp usuario@maquina_remota:archivo.txt  .

Copia de más de un archivo con el mismo nombre:

scp usuario@maquina_origen:archivo*.txt  .

Copia recursiva de un directorio y sus archivos internos:

scp -r usuario@maquina_origen:directorio/*  .

Como se puede apreciar, la sintaxis es muy parecida en ambos casos, tanto para la copia de máquina origen siendo la local, como de máquina origen siendo la estación remota.

Gestión de claves

Generar una llave privada y pública

Con el comando ssh-keygen se pueden generar llaves privadas y públicas, o asimétricas, de un usuario en un host específico con la intención de crear relaciones de confianza para cuando se desea realizar una conexión a un host remoto.

La manera más sencilla es:

ssh-keygen -t rsa -b 1024

Generating public/private rsa key pair.
Enter file in which to save the key (/home/nuxpy/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/nuxpy/.ssh/id-rsa.
Your public key has been saved in /home/nuxpy/.ssh/id-rsa.pub.
The key fingerprint is:
SHA256:zhTN6uvH/19XD6Ft1ukErhjJ3LsNwt/VsxDfyv6ayqg nuxpy@host
The key's randomart image is:
+---[RSA 1024]----+
|                 |
|         o       |
|        . o   .  |
|         o   o o |
|        So o.o* o|
|       = .= o++o=|
|        +.o..+.oB|
|         .o=.*o==|
|       .Eo..**%=o|
+----[SHA256]-----+

Por defecto el comando ofrece crear las llaves en el home del usuario en cuestión, ejemplo: /home/nuxpy/.ssh; con nombre: id_rsa y id_rsa.pub. Para comodidad de la conexión, se puede dejar sin contraseña.

La llave .pub es el fichero que se comparte para que el host remoto pueda asociarlo durante una conexión ssh, el host remoto puede tomar el contenido y crearlo o añadirlo en un fichero llamado authorized_keys de la siguiente manera:

cat id_rsa.pub >> ~/.ssh/authorized_keys

Eliminar un host del registro host conocidos

El programa ssh permite registrar hosts o equipos conocidos en donde el usuario ha realizado alguna conexión ssh, generalmente se guarda en el directorio home de cada usuario dentro de un subdirectorio oculto llamado .ssh. Un ejemplo de cómo remover un registro de host conocido sería:

ssh-keygen -f "/home/usuario/.ssh/known_hosts" -R 192.168.1.106

También se puede realizar hacia un dominio específico, por ejemplo:

ssh-keygen -f "/home/usuario/.ssh/known_hosts" -R midominio.org

Temas relacionados