Está en la página 1de 17

¿Qué es la 

conexion remota? Es la conexión a distancia entre dos o más equipos,


donde uno de ellos permite acceder al otro como si se estuviese trabajando
directamente en frente de este, mediante el empleo de un remote access software.

Características de un acceso remoto efectivo


Sistema seguro
Puesto que hay datos muy sensibles que se envían por Internet, los usuarios quieren
saber que sus conexiones y transferencias de datos son seguras. La dificultad de crear
un sistema de acceso remoto es que el personal de TI debe balancear la necesidad de
una conexión segura con ofrecer la mejor cantidad de funciones necesarias posible. El
personal de TI debe estar formado para implementar, de forma efectiva, protocolos de
seguridad en estas redes. Esto no puede dejarse bajo la responsabilidad de quienes
hacen la conexión.
Soporte para computadoras del hogar
Un segundo componente crucial es la seguridad de red para computadoras del hogar:
el personal de TI debe asumir el reto de conectarse con ellas, que suelen tener
instalado software anti intrusos y antivirus. Estas máquinas pueden no ajustarse a los
estándares de seguridad corporativos fijados por la compañía. Puede que les falten
actualizaciones de seguridad, parches de software o un cortafuegos. El personal debe
indicar el grado con el que el sistema se acomodará a estos obstáculos del hogar. Al
contrario que en las operaciones de negocios normales, donde conectar una
computadora del hogar no suele ser un problema, sí lo es para los negocios que
dependen más de entornos cambiantes.
Envía el entorno de trabajo total
Los sistemas de acceso remoto deben enviar el entorno de trabajo total y no requerir
que los empleados aprendan un sistema distinto. Esto puede requerir formación, que
cuesta dinero y tiempo del disponible para realizar sus tareas principales en la
organización. Además, muchas corporaciones dependen de software que está
diseñado para el mundo de los negocios y que no se instala fácilmente en la
computadora del hogar de alguien. Las soluciones deben indicar las aplicaciones de red
interna de compartición de discos e e-mail. Estas soluciones también deben poder
enviar estas aplicaciones, controlar sus licencias y controlar cómo los programas se
distribuyen.
Dirigido a las necesidades de cada persona
Antes de desplegar una solución de acceso remoto, tu negocio debe identificar todas
las personas que dependerán de la red, desde los teletrabajadores de tiempo
completo como los usuarios que acceden de forma poco frecuente. Los usuarios de
tiempo completo deben tener acceso a las mismas funciones que tendrían trabajando
en la oficina. Sin embargo, también debes tener en cuenta a las personas que realizan
viajes ocasionales, que tienen necesidades distintas a las de los teletrabajadores de
tiempo completo. Estos empleados no acceden regularmente al sistema. Pueden
conectarse desde computadoras que no están configuradas para ejecutar aplicaciones
de la corporación. Debes asegurarte de que estos usuarios tengan acceso a los
recursos críticos, como el e-mail y el acceso a los discos que contienen archivos
críticos.
Beneficios mayores que costes
Los sistemas de acceso remoto son sistemas caros de instalar. Sin embargo, el coste de
la instalación es solo una parte del coste de vida del sistema. Los negocios deben
sopesar el coste de tener el sistema y el coste de oportunidad. Los costes de propiedad
incluyen el hardware, instalación, gestión y soporte. Cada producto aumenta la
necesidad de tiempo de gestión y formación del personal; los sistemas de seguridad
son costes separados y continuos. Además de estos costes directos, los negocios
también deben tener en cuenta el coste de oportunidad. Por ejemplo, un negocio debe
asegurar que un sistema de acceso remoto es una parte necesaria de la estrategia del
núcleo del negocio. Puesto que el mantenimiento del sistema es caro, el negocio debe
asegurar que esos fondos no podrían usarse mejor para otras metas estratégicas.
Soporte técnico disponible
Puesto que los usuarios de un acceso remoto usarán el sistema a todas horas de la
noche, los negocios deben estar preparados para ofrecer las opciones de soporte
técnico más flexibles disponibles. Esto es particularmente importante para aquellas
compañías cuyos empleados realizan su trabajo principal a través de un sistema de
acceso remoto. Por ejemplo, si hay un fallo en el sistema, el personal de TI debe
encargarse del problema de inmediato, tanto si es a mitad del día como de la noche.
Por esta razón, los negocios que no tienen personal especializado en esta tecnología
deben considerar un sistema de acceso remoto subcontratado. De esta forma, los
problemas técnicos pueden ser dirigidos al personal especializado en estos sistemas.
Comandos básicos
A continuación, facilitamos un listado de los comandos básicos para trabajar con los
archivos mediante la conexión por SSH:

 cd: la ruta donde quieras acceder.

 ls: lista el contenido de todos los archivos y directorios.

 rm: elimina archivo.

 mkdir: crea un nuevo directorio.

 rmdir: elimina carpeta.

 pwd: ubicación de la ruta actual.

 cp: copia un archivo a otro directorio.

 mv: mueve los archivos entre carpetas.

 more: si realizas una búsqueda con muchos resultados, este comando te


permite ver los resultados desglosados.

 unzip: descomprime los archivos comprimidos.

 ftp: conecta para subir/bajar archivos de nuestro equipo local al servidor.

 mysql: permite trabajar con las bases de datos, y realiza


exportaciones/importaciones de contenido.

 exit: sale de la máquina remota donde estás conectado.

 clear: limpia toda la información que tengas en la pantalla.


 
3.-Permisos usuario SSH
Cuando empiezas a trabajar con el usuario de SSH, debes controlar los permisos que
tienes asignados a cada uno de los directorios, ya que las carpetas creadas por FTP o
por SSH no tienen el mismo usuario, pero sí que pertenecen al mismo grupo.
Comandos más populares para el uso de SSH
Conexión SSH por terminal
Para conectar con un servidor vía SSH por terminal hay que lanzar el comando ssh e
indicar tanto la máquina como el usuario con el que vas a conectar.
ssh usuario@0.0.0.0
También podrías usar un nombre de dominio en caso que dispongas de uno apuntando
a esa máquina.
ssh root@example.com
O puedes conectar haciendo uso de una llave privada, si es que el servidor tiene
configurada una.
ssh -i ruta/a/la/llave user@example.com
Comandos básicos para administrar un servidor
Recuerda que si no has entrado como superusuario (root) tendrás que usar sudo antes
de los comandos para obtener permisos de administrador. Por ejemplo:
sudo apt-get update
Administrar el software instalado
Es importante usar los repositorios de software para gestionar el software instalado en
el servidor. El comando depende de la distribución de Linux que se está usando.

 Ubuntu / Debian: comando apt-get

 Fedora / Centos / Red Hat: comando yum


Estos gestores de paquetes tienen diversos subcomandos para realización de
instalaciones de software y actualizaciones. Por ejemplo, se instala un programa
con install, indicando luego el nombre del paquete que queremos instalar. En los
siguientes comandos se estaría instalando el editor de texto Vim.
apt-get install vim
yum install vim
Aún más importante que instalar software es mantenerlo actualizado, lo que
principalmente evitará que nuestro servidor presente problemas de seguridad
conocidos en versiones antiguas.
En apt-get necesitamos hacer una secuencia de comandos:
apt-get update
apt-get upgrade
El primero sirve para actualizar las listas de paquetes del repositorio. El segundo para
actualizar el software que disponga nuevas versiones.
Por su parte, yum update es más sencillo, ya que simplemente el comando update se
encarga de realizar esa doble función.
yum update
Reinicios del sistema
En algunos casos, las actualizaciones de paquetes requieren el reinicio del sistema. En
esos casos lo podemos conseguir con el siguiente comando:
reboot
En este caso, el sistema se saldrá de SSH, dado que el servidor se está reiniciando y por
tanto nos desconectará. En ese caso, tendrás que volver a iniciar la sesión pasados
unos minutos. Si deseamos apagarlo completamente podemos escribir el comando:
shutdown
Ese comando apagará la máquina, por lo que ya no podrás acceder a ella hasta que la
arranques de nuevo desde el Panel de Control del servidor en Arsys.
Reinicios de servicios
Muchas veces, un mal funcionamiento puntual de una aplicación se soluciona con un
reinicio de la base de datos o el servidor web. Es normal que, con el tiempo, los
servicios puedan dar uno u otro problema y el reinicio puede servir para volver a la
normalidad, pero si la situación se repite habitualmente habría que observar con
mayor detenimiento la situación.
Aquí será clave saber cuáles son las tecnologías que usan las aplicaciones porque,
dependiendo de las aplicaciones que estemos utilizando, los comandos para reiniciar
los servicios serían diferentes. Pero ponemos algunos ejemplos:
El servidor web Apache se reinicia:
service apache2 restart
Aunque hay otras alternativas de reinicio como el comando /etc/init.d/apache2 restart
El servidor web Nginx se reinicia:
systemctl restart nginx
MySQL se reinicia:
service mysqld start
Transferir archivos hacia el servidor remoto

En este caso tenemos que indicar el archivo en nuestro sistema local que queremos subir,
junto con los datos de SSH para conectarse al servidor remoto, así como la localización de
destino.

scp archivo-en-local.tar user@1.2.3.4:/directorio/destino/servidor/remoto

archivo-en-local.tar es el archivo que queremos subir

user es el nombre del usuario que tenemos para el acceso SSH.

2.3.4 es la IP del servidor remoto. También podríamos hacer uso del nombre del dominio que
resuelva hacia ese servidor.

/directorio/destino/servidor/remoto es el directorio donde quieres dejar el archivo, dentro del


servidor remoto.

Al realizar la conexión, se nos solicitará la clave que tengamos en el servidor remoto, para
autenticar el acceso.

Transferir archivos desde el servidor remoto

En este caso queremos descargar un archivo existente en el servidor, para disponer de él en


nuestro ordenador de trabajo. El comando es bastante similar, solo que indicamos primero los
datos del servidor remoto y el archivo requerido y luego la localización donde colocarlo en
local.

scp user@1.2.3.4:/ruta/servidor/remoto/archivo.tgz archivo-en-local.tgz

En este ejemplo nos conectaríamos al servidor con la IP 1.2.3.4 y usando el usuario user. El
fichero del servidor llamado archivo.tgz lo almacenaríamos en nuestro ordenador con el
nombre archivo-en-local.tgz.

El comando scp es bastante potente. Te aconsejamos listar su ayuda para comprobar otras
opciones útiles, como por ejemplo la transferencia de directorios con todo su contenido, con
la opción -r.
INVESTIGACIÓN ANTERIOR MENTE
Manera remota

SHH sistema de interconexión en linux

¿Cómo funciona el SSH?

SSH o Secure Shell, es un protocolo de administración remota que le permite a los usuarios
controlar y modificar sus servidores remotos a través de Internet a través de un mecanismo de
autenticación.

Proporciona un mecanismo para autenticar un usuario remoto, transferir entradas desde el


cliente al host y retransmitir la salida de vuelta al cliente. El servicio se creó como un
reemplazo seguro para el Telnet sin cifrar y utiliza técnicas criptográficas para garantizar que
todas las comunicaciones hacia y desde el servidor remoto sucedan de manera encriptada.

La imagen de abajo muestra una ventana típica de SSH. Cualquier usuario de Linux o macOS
puede usar SSH en su servidor remoto directamente desde la ventana del terminal. Los
usuarios de Windows pueden aprovechar los clientes SSH como Putty. Puedes ejecutar
comandos shell de la misma manera que lo harías si estuvieras operando físicamente el equipo
remoto.

¿Cómo funciona SSH?

Si usas Linux o Mac, entonces usar el protocolo SSH es muy fácil. Si utilizas Windows, deberás
utilizar un cliente SSH para abrir conexiones SSH. El cliente SSH más popular es PuTTY, puedes
aprender más acerca de él aquí.

Para usuarios de Mac y Linux, dirígete a tu programa de terminal y sigue este procedimiento:

El comando SSH consta de 3 partes distintas:

ssh {user}@{host}

El comando de clave SSH le indica a tu sistema que desea abrir una Conexión de Shell Segura y
cifrada. {user} representa la cuenta a la que deseas acceder. Por ejemplo, puede que quieras
acceder al usuario root, que es básicamente para el administrador del sistema con derechos
completos para modificar cualquier cosa en el sistema. {host} hace referencia al equipo al que
quieres acceder. Esto puede ser una dirección IP (por ejemplo, 244.235.23.19) o un nombre de
dominio (por ejemplo, www.xyzdomain.com).

Al pulsar enter, se te pedirá que escribas la contraseña de la cuenta solicitada. Al escribirla,


nada aparecerá en la pantalla, pero tu contraseña, de hecho, se está transmitiendo. Una vez
que hayas terminado de escribir, pulsa enter una vez más. Si tu contraseña es correcta, verás
una ventana de terminal remota.

Si quieres aprender más sobre comandos SSH, puedes verlos aquí.

Comprendiendo las diferentes técnicas de cifrado

La ventaja significativa ofrecida por el protocolo SSH sobre sus predecesores es el uso del
cifrado para asegurar la transferencia segura de información entre el host y el cliente. Host se
refiere al servidor remoto al que estás intentando acceder, mientras que el cliente es el equipo
que estás utilizando para acceder al host. Hay tres tecnologías de cifrado diferentes utilizadas
por SSH:

1. Cifrado simétrico

2. Cifrado asimétrico

3. Hashing

Cifrado Simétrico

El cifrado simétrico es una forma de cifrado en la que se utiliza una clave secreta tanto para el
cifrado como para el descifrado de un mensaje, tanto por el cliente como por el host.
Efectivamente, cualquiera que tenga la clave puede descifrar el mensaje que se transfiere.

que es ssh - cifrado simétrico

El cifrado simétrico a menudo se llama clave compartida (shared key) o cifrado secreto
compartido. Normalmente sólo hay una clave que se utiliza, o a veces un par de claves donde
una clave se puede calcular fácilmente con la otra clave.

Las claves simétricas se utilizan para cifrar toda la comunicación durante una sesión SSH. Tanto
el cliente como el servidor derivan la clave secreta utilizando un método acordado, y la clave
resultante nunca se revela a terceros. El proceso de creación de una clave simétrica se lleva a
cabo mediante un algoritmo de intercambio de claves.
Lo que hace que este algoritmo sea particularmente seguro es el hecho de que la clave nunca
se transmite entre el cliente y el host. En lugar de eso, los dos equipos comparten datos
públicos y luego los manipulan para calcular de forma independiente la clave secreta. Incluso
si otra máquina captura los datos públicamente compartidos, no será capaz de calcular la clave
porque el algoritmo de intercambio de clave no se conoce.

Debe tenerse en cuenta, sin embargo, que el token secreto es específico para cada sesión SSH,
y se genera antes de la autenticación del cliente. Una vez generada la clave, todos los paquetes
que se mueven entre las dos máquinas deben ser cifrados por la clave privada. Esto incluye la
contraseña escrita en la consola por el usuario, por lo que las credenciales siempre están
protegidas de los fisgones de paquetes de red.

Existen varios códigos cifrados simétricos, incluyendo, pero no limitado a, AES (Advanced
Encryption Standard), CAST128, Blowfish, etc. Antes de establecer una conexión segura, el
cliente y un host deciden qué cifrado usar, publicando una lista de cifrados soportados por
orden de preferencia. El cifrado preferido de entre los soportados por los clientes que está
presente en la lista del host se utiliza como el cifrado bidireccional.

Por ejemplo, si dos máquinas Ubuntu 14.04 LTS se comunican entre sí a través de SSH,
utilizarán aes128-ctr como su cifrado predeterminado.

Cifrado Asimétrico

A diferencia del cifrado simétrico, el cifrado asimétrico utiliza dos claves separadas para el
cifrado y el descifrado. Estas dos claves se conocen como la clave pública (public key) y la clave
privada (private key). Juntas, estas claves forman el par de claves pública-privada (public-
private key pair).

Cifrado asimétrico

La clave pública, como sugiere el nombre, se distribuye abiertamente y se comparte con todas
las partes. Si bien está estrechamente vinculado con la clave privada en términos de
funcionalidad, la clave privada no se puede calcular matemáticamente desde la clave pública.
La relación entre las dos claves es altamente compleja: un mensaje cifrado por la clave pública
de una máquina, sólo puede ser descifrado por la misma clave privada de la máquina. Esta
relación unidireccional significa que la clave pública no puede descifrar sus propios mensajes ni
descifrar nada cifrado por la clave privada.
La clave privada debe permanecer privada, es decir, para que la conexión sea asegura, ningún
tercero debe conocerla. La fuerza de toda la conexión reside en el hecho de que la clave
privada nunca se revela, ya que es el único componente capaz de descifrar mensajes que
fueron cifrados usando su propia clave pública. Por lo tanto, cualquier parte con la capacidad
de descifrar mensajes firmados públicamente debe poseer la clave privada correspondiente.

A diferencia de la percepción general, el cifrado asimétrico no se utiliza para cifrar toda la


sesión SSH. En lugar de eso, sólo se utiliza durante el algoritmo de intercambio de claves de
cifrado simétrico. Antes de iniciar una conexión segura, ambas partes generan pares de claves
públicas-privadas temporales y comparten sus respectivas claves privadas para producir la
clave secreta compartida.

Una vez que se ha establecido una comunicación simétrica segura, el servidor utiliza la clave
pública de los clientes para generar y desafiar y transmitirla al cliente para su autenticación. Si
el cliente puede descifrar correctamente el mensaje, significa que contiene la clave privada
necesaria para la conexión. Y entonces comienza la sesión SSH.

Hashing

El hashing unidireccional es otra forma de criptografía utilizada en Secure Shell Connections.


Las funciones de hash unidireccionales difieren de las dos formas anteriores de encriptación en
el sentido de que nunca están destinadas a ser descifradas. Generan un valor único de una
longitud fija para cada entrada que no muestra una tendencia clara que pueda explotarse. Esto
los hace prácticamente imposibles de revertir.

Descripción de Hash

Es fácil generar un hash criptográfico de una entrada dada, pero imposible de generar la
entrada del hash. Esto significa que, si un cliente tiene la entrada correcta, pueden generar el
hash criptográfico y comparar su valor para verificar si poseen la entrada correcta.

SSH utiliza hashes para verificar la autenticidad de los mensajes. Esto se hace usando HMACs, o
códigos de autenticación de mensajes basados en hash. Esto asegura que el comando recibido
no se altere de ninguna manera.

Mientras se selecciona el algoritmo de cifrado simétrico, también se selecciona un algoritmo


de autenticación de mensajes adecuado. Esto funciona de manera similar a cómo se selecciona
el cifrado, como se explica en la sección de cifrado simétrico.
Todo mensaje transmitido debe contener un MAC, que se calcula utilizando la clave simétrica,
el número de secuencia de paquetes y el contenido del mensaje. Se envía fuera de los datos
cifrados simétricamente como la sección final del paquete de comunicaciones.

Ahora que sabes cómo funcionan las técnicas de cifrado, quizás te interese conocer nuestros
servicios de VPS hosting con máxima velocidad y estabilidad.

Ver Planes VPS

¿Cómo funciona el protocolo SSH con estas técnicas de cifrado?

La forma en que funciona SSH es mediante el uso de un modelo cliente-servidor para permitir
la autenticación de dos sistemas remotos y el cifrado de los datos que pasa entre ellos.

SSH opera en el puerto TCP 22 de forma predeterminada (aunque esto se puede cambiar si es
necesario). El host (servidor) escucha en el puerto 22 (o cualquier otro puerto SSH asignado)
para las conexiones entrantes. Organiza la conexión segura mediante la autenticación del
cliente y la apertura del entorno de shell correcto si la verificación tiene éxito.

Cliente SSH y servidor

El cliente debe iniciar la conexión SSH iniciando el protocolo TCP con el servidor, asegurando
una conexión simétrica segura, verificando si la identidad mostrada por el servidor coincide
con los registros anteriores (normalmente grabados en un archivo de almacén de claves RSA) y
presenta las credenciales de usuario necesarias para autenticar la conexión.

Hay dos etapas para establecer una conexión: primero ambos sistemas deben acordar
estándares de cifrado para proteger futuras comunicaciones, y segundo, el usuario debe
autenticarse. Si las credenciales coinciden, se concede acceso al usuario.

Negociación de cifrado de sesión

Cuando un cliente intenta conectarse al servidor a través de TCP, el servidor presenta los
protocolos de cifrado y las versiones respectivas que soporta. Si el cliente tiene un par similar
de protocolo y versión, se alcanza un acuerdo y se inicia la conexión con el protocolo aceptado.
El servidor también utiliza una clave pública asimétrica que el cliente puede utilizar para
verificar la autenticidad del host.
Una vez que esto se establece, las dos partes usan lo que se conoce como Algoritmo de
Intercambio de Claves Diffie-Hellman para crear una clave simétrica. Este algoritmo permite
que tanto el cliente como el servidor lleguen a una clave de cifrado compartida que se utilizará
en adelante para cifrar toda la sesión de comunicación.

Aquí es cómo el algoritmo trabaja en un nivel muy básico:

1. Tanto el cliente como el servidor coinciden en un número primo muy grande, que por
supuesto no tiene ningún factor en común. Este valor de número primo también se conoce
como el valor semilla (seed value).

2. Luego, las dos partes acuerdan un mecanismo de cifrado común para generar otro conjunto
de valores manipulando los valores semilla de una manera algorítmica específica. Estos
mecanismos, también conocidos como generadores de cifrado, realizan grandes operaciones
sobre la semilla. Un ejemplo de dicho generador es AES (Advanced Encryption Standard).

3. Ambas partes generan independientemente otro número primo. Esto se utiliza como una
clave privada secreta para la interacción.

4. Esta clave privada recién generada, con el número compartido y el algoritmo de cifrado (por
ejemplo, AES), se utiliza para calcular una clave pública que se distribuye a la otra
computadora.

5. A continuación, las partes utilizan su clave privada personal, la clave pública compartida de
la otra máquina y el número primo original para crear una clave compartida final. Esta clave se
calcula de forma independiente por ambos equipos, pero creará la misma clave de cifrado en
ambos lados.

6. Ahora que ambas partes tienen una clave compartida, pueden cifrar simétricamente toda la
sesión SSH. La misma clave se puede utilizar para cifrar y descifrar mensajes (leer: sección
sobre cifrado simétrico).

Ahora que se ha establecido la sesión cifrada segura simétricamente, el usuario debe ser
autenticado.

Autenticación del usuario


La etapa final antes de que se conceda al usuario acceso al servidor es la autenticación de sus
credenciales. Para ello, la mayoría de los usuarios de SSH utilizan una contraseña. Se le pide al
usuario que introduzca el nombre de usuario, seguido de la contraseña. Estas credenciales
pasan con seguridad a través del túnel cifrado simétricamente, así que no hay ninguna
posibilidad de que sean capturadas por un tercero.

Aunque las contraseñas se cifran, todavía no se recomienda usar contraseñas para conexiones
seguras. Esto se debe a que muchos robots pueden simplemente realizar ataque de fuerza
bruta para descifrar contraseñas fáciles o predeterminadas y así obtener acceso a tu cuenta.
En vez de eso, la alternativa recomendada es un par de claves SSH.

Se trata de un conjunto de claves asimétricas utilizadas para autenticar al usuario sin


necesidad de introducir ninguna contraseña.

Conclusión

Obtener una comprensión en profundidad de la forma subyacente de funcionamiento de SSH


puede ayudarle a los usuarios a comprender los aspectos de seguridad de esta tecnología. La
mayoría de la gente considera este proceso extremadamente complejo y poco comprensible,
pero es mucho más simple de lo que la mayoría piensa.

Si te estás preguntando cuánto tiempo toma una computadora para calcular un hash y
autenticar a un usuario, bueno, sucede en menos de un segundo. De hecho, la mayor cantidad
de tiempo se gasta en la transferencia de datos a través de Internet.

Con suerte, este tutorial de SSH te ha ayudado a ver la forma en que se pueden combinar
diferentes tecnologías para crear un sistema robusto en el que cada mecanismo tiene un papel
muy importante que desempeñar. Además, ahora ya sabes por qué Telnet se convirtió en una
cosa del pasado tan pronto apareció SSH.

Cómo usar el comando SCP para transferir archivos

       

El comando SCP (Secure Copy Protocol) de Linux es un protocolo de transferencia de archivos


en red que permite la transferencia de archivos fácil y segura entre un host remoto y uno local,
o entre dos ubicaciones remotas. Se basa en el Protocolo de Copia Remota de Berkeley
Software Distribution.

Los desarrolladores full-stack utilizan con frecuencia el comando SCP para sus funciones de
autenticación y cifrado sin requerir servicios de alojamiento de terceros como Github. Es una
forma fácil de evitar la exposición de tus datos a rastreadores de paquetes, y de preservar su
confidencialidad.

En esencia, SCP es una mezcla de RCP y SSH (Secure Shell). Se basa en el primero para realizar
operaciones de copia y en el segundo para cifrar la información y autenticar los sistemas
remotos.

A diferencia de Rsync, todo lo que necesitas para usar la línea de comandos de SCP con éxito
es un nombre de usuario y contraseña o frase de contraseña para los sistemas involucrados en
la transferencia. Esto agiliza el proceso ya que no es necesario iniciar sesión en ninguno de
ellos.

Transferir archivos de forma segura es primordial cuando se usa un VPS. Afortunadamente, se


puede hacer fácilmente usando el comando SCP. En este artículo aprenderás a usar los
comandos SCP y cómo pueden ayudarte.

Sintaxis de ejemplo del comando SCP en Linux

El ejemplo del comando SCP básico se ve así:

scp [other options] [source username@IP]:/[directory and file name] [destination


username@IP]:/[destination directory]

Puede parecer complicado al principio, ¡pero con gusto lo desglosaremos!

En este ejemplo estamos realizando una transferencia entre dos servidores VPS.

 [other options] son modificadores que puedes agregar al comando SCP. Veremos los
más populares más tarde.

 [source username@IP] es el nombre de usuario y la IP de la máquina que tiene el


archivo que deseas. Se vería algo así como root@123.123.123.12

 :/ informa al comando SCP que estás a punto de escribir en el directorio de origen

 [directory and file name] es donde está ubicado el archivo, y su nombre. Se ve algo así
/usuarios/Gustavo/Escritorio/SCP.png

 [destination username@IP] es el nombre de usuario y la IP de la máquina de destino.

 [destination directory] por último, está el directorio de destino donde se guardará el


archivo.

En un escenario del mundo real se vería así:

scp -p root@162.168.1.1:/media/scp.png edward@162.168.1.2:/desktop/destination

¡Es bastante simple! Si estás copiando hacia o desde una máquina local, no necesitarás la
dirección IP, el destino o la ruta de origen como /escritorio/nombre_de_carpeta.

Hablemos de otras opciones que puedes usar para modificar el comando SCP. Hay 20 comunes
que puedes usar tanto en forma de un solo caracter (-o), como en su equivalente descriptivo (–
option). Las opciones más utilizadas son:

 –P port permite especificar una entrada diferente al servidor (el puerto


predeterminado para el puerto TCP para el comando es 22)
 –c cipher te da la posibilidad de especificar el algoritmo de cifrado que utilizará el
cliente. Algunos de los valores que puedes usar son ‘aes256-ctr’, ‘aes256-cbc’,
‘blowfish-cbc’, ‘arcfour’, ‘arcfour128’, ‘arcfour256’, ‘cast128-cbc’, aes128-ctr’, ‘aes128-
cbc’, ‘aes192-ctr’, ‘aes192-cbc’, y 3des-cbc’. La opción predeterminada en la
configuración de shell es ‘AnyStdCipher’

 –q ejecutará la operación en modo silencioso (quiet), lo que significa que solo se


mostrarán los errores críticos.

 –r es para copia recursiva, que incluirá todos los subdirectorios.

 –4 o -6 se pueden usar si quieres elegir la versión de protocolo empleada, ya sea IPv4 o


IPv6. También puedes configurar los requisitos de dirección IP de manera más
exhaustiva con la palabra clave de la familia de direcciones (address-family keyword).

 –p conservará los tiempos de modificación iniciales y los atributos del archivo.

 –u borrará el archivo fuente después de que se complete la transferencia.

 –c permitirá la compresión de los datos mientras se lleva a cabo la operación de


transferencia.

Aspectos a tener en cuenta

Como SCP utiliza el cifrado SSH, necesitarás la contraseña ssh para que se realice la
transferencia de archivos. Además, es necesario tener permiso de lectura en la máquina de la
que estás a punto de copiar y privilegios de escritura en la(s) máquina(s) a la que copiarás.

Para la autenticación y la configuración de la conexión, deberás generar un par de llaves ssh en


el terminal mediante el siguiente comando:

ssh-keygen -t rsa

Copia esta llave del sistema remoto usando:

ssh-copy-id user@remote_machine

Una vez que te hayas autenticado en la(s) máquina(s) remota(s), la llave pública se copiará y
estarás listo para iniciar las transferencias.

Si no recuerdas la(s) contraseña(s) de root para cada sistema, puedes hacer que el cliente ssh
seleccione el archivo desde el cual se lee automáticamente la llave de identidad privada para la
confirmación de RSA.

Para la versión 2 del protocolo, la ruta de identidad predeterminada de la llave del host
es ~/.ssh/id_dsa, mientras que para la versión 1 del protocolo es ~/.ssh/id_rsa. Luego, debes
averiguar dónde está almacenada la copia de seguridad de las llaves privada y pública para
poder emplear el comando ssh para usarlas automáticamente.

Para la ruta /back-up/home/jack/.ssh, el comando es el siguiente:

ssh -i /back-up/home/user/.ssh/id_dsa user@yourserver.servername.domain

Consejo profesional: esta opción tiene el valor predeterminado –overwrite [yes], así que, a


menos que especifiques la opción –overwrite no o –overwrite ask en el comando scp, la
operación sobrescribirá los archivos que tienen nombres y ubicaciones idénticos sin ninguna
advertencia.

Si estás transfiriendo archivos grandes, te recomendamos utilizar una sesión tmux o que
ejecutes el comando dentro de una pantalla diferente. Además, también debes usar la opción
–v para transferencias grandes. Esto forzará a scp a mostrar cualquier conexión de depuración,
autenticación o problemas de configuración.

Copiando archivos con el comando SCP

La mejor parte de SCP en Linux es que te da la posibilidad de transferir archivos entre dos
hosts o entre un host y una máquina local. Veamos cómo se debería usar el comando para
cada tipo de transferencia.

Archivo local a una ubicación remota

Copiaremos un archivo local scp.zip, al usuario de la máquina remota llamado root. El nombre


de usuario es seguido por la dirección IP del servidor.

Ejemplo:

scp /users/Edward/desktop/scp.zip root@191.162.0.2:/writing/article

Si no tienes configurada una confirmación automática de cliente ssh, se te solicitará que


ingreses la contraseña del usuario de la máquina remota y verás un medidor de progreso. Se
vería algo como esto:

root@191.162.0.2’s password:

novel3.zip  100% 0 0.0KB/s 00:00

Pero digamos que la máquina remota está configurada para escuchar las conexiones SSH en un
puerto que no sea el predeterminado 22. En este caso, debes especificar ese puerto usando
una opción.

scp -P 2322 /users/Edward/desktop/scp.zip root@191.162.0.2:/writing/article

Si también quieres cambiar el nombre del archivo durante la operación de transferencia, tu


comando tendrá este aspecto (si tu puerto no es el predeterminado, simplemente agrega –P y
el número de puerto):

scp /users/Edward/desktop/scp.zip root@191.162.0.2:/writing/article/howtoscp.zip

Si quieres copiar un directorio que tiene más archivos y/o subdirectorios, usa el comando -
r que describimos anteriormente

scp -r /users/Edward/desktop root@191.162.0.2:/writing/article

Archivo remoto a máquina local

En este proceso, el origen y el destino del comando se invierten, por lo que esto debe
reflejarse en la sintaxis. Esta vez, estamos intentando copiar scp.zip desde el mismo host
remoto a nuestra máquina local:

scp root@191.162.0.2:/writing/articles/SCP.zip Users/Edward/Desktop


Nuevamente, esto debería solicitar la misma salida de inicio de sesión SSH en la que debes
ingresar la contraseña, a menos que la autenticación esté deshabilitada por los privilegios de
sudo, o si forzaste al cliente ssh a usar una llave privada en tu máquina.

Archivo remoto a otra ubicación remota

Para copiar archivos de un host remoto a otro, deberás ingresar las contraseñas de ambas
cuentas después de ejecutar este comando en tu terminal.

Ejemplo:

scp root@191.162.0.2:/writing/article/scp.zip edward@11.10.0.1:/publishing

El comando anterior copia el archivo fuente /writing/article/scp.zip desde el primer host al


segundo. Para copiar carpetas, simplemente agrega la opción –r y especifica la ruta de la
carpeta en lugar del archivo dentro de ella, como hicimos antes.

En circunstancias normales, el archivo va directamente del primer host remoto al segundo. Sin
embargo, si quieres redireccionar la operación a través de tu máquina, puedes agregar la
opción -3:

scp -3 root@191.162.0.2:/writing/article/scp.zip edward@11.10.0.1:/publishing

¡Eso es todo!

Conclusión

En este artículo hemos aprendido cómo transferir fácilmente archivos entre hosts remotos y
locales con el comando SCP de Linux. Esto es extremadamente útil cuando trabajas con
múltiples servidores. El protocolo de copia segura (SCP – Secure Copy Protocol) hace que sea
más fácil copiar con éxito información de un host remoto a otro sin tener que iniciar sesión.

Además, este método de transferencia remota de archivos cifra tus datos con secure shell
(SSH), lo que garantizará la confidencialidad de la información que se transmita.

También podría gustarte