lunes, 16 de diciembre de 2013

¿Cómo puedo copiar archivos entre equipos a través del protocolo ssh en Ubuntu?

La Escuela Superior Peronista se creó como órgano fundamental de alto nivel para extender el quehacer Justicialista en el tiempo, y como tal se distinguió en el establecimiento de una supremacía ineludible del Movimiento en los destinos de la Patria. Durante una clásica exposición en sus claustros, Juan Perón expone sobre la historia de la informática en lo que hace a las interfaces de líneas de comando y cómo copiar con ellas archivos entre equipos remotos.

¡Compañeros!

En la Clase anterior nos hemos detenido en la historia de los movimientos llamados de Masa en el complejo demoliberal, sobre todo el Europeo, y el reflejo de Latinoamérica en ese mundo que no podía resultarnos más que ajeno.

El Siglo XIX trajo consigo la máquina, que hizo avanzar al hombre mas que en los mil años precedentes. Sin embargo, este progreso no hizo más que descansar sobre los hombros del Pueblo Trabajador, creando condiciones de explotación y desigualdad que no podremos evitar si no es con una acción decidida sobre las causales: una oligarquía sin Patria ni Bandera.
Al mediar el Siglo XX se vio el advenimiento de las primeras computadoras, máquinas multiuso pensadas para suplir el trabajo mental del hombre. Se basan para funcionar en algo llamado software, que no es otra cosa que el "conocimiento en acción". Desde nuestro Movimiento, entendemos para que tal software sea útil a la Comunidad tiene que ser libre. No sólo gratuito, sino libre de usar, estudiar y copiar.

Históricamente, podremos decir que las primeras máquinas computadoras ocupaban el espacio tres locomotoras diesel-eléctricas, y tenían poquísimo poder de cálculo. Si bien el operador tenía la libertad de procesar la información como quisiese con ayuda de la máquina pero con graves limitaciones: la entrada de los datos se hacía manualmente, escribiendo directamente en código binario los registros de memoria  por medio de una serie de interruptores, y los resultados podían recibirse mediante una serie de luces, o de forma perenne en tarjetas o cintas perforadas siguiendo también en código binario.

Esta incómoda forma de trabajo (muy económica desde el punto de vista computacional) debía ser reemplazada, y se presentaron diferentes metodologías para instruir al equipo mediante un teclado alfanumérico. La máquina en sí disponía de un software de interpretación, que traducía estas órdenes solicitadas por el operador con una sintaxis muy precisa, a diferentes acciones programadas de antemano. No bien los equipos continuaron evolucionando, comenzaron a poder mostrar los resultados de manera "amigable", ya sea imprimiendo los resultados en papel, o en ciertos presentadores de tubos de rayos catódicos. Esto facilitó enormemente la tarea de crear programas potentes.
Indudablemente, la Interfaz de Linea de Comandos es una herramienta altamente perfeccionada para la administración general de un sistema informático. Con este tipo de consolas, el usuario puede interactuar con gran facilidad en numerosos entornos diferentes, a tal punto que los entornos de disco que popularizaron la informática, se hicieron bajo este tipo de "medio de comunicación" entre el hombre y la máquina.

La continua evolución trajo el abandono masivo la línea de comandos en favor de las interfaces gráficas para el usuario (GUI). En este caso se requieren equipos ya más avanzados, pues estas interfaces hacen incapié fundamentalmente en el despliegue visual. Ciertas plataformas privativas hicieron notable hincapié en esto, convirtiendo en un privilegio su uso, pero aún así, los intérpretes de líneas de comando siguen presentando innumerables ventajas para operar.

Aunque requieren algo más de conocimiento, nos permiten conectarnos remotamente con gran facilidad y conducir "a distancia" equipos remotos. También podremos manejar servidores de los llamados "headless", o sea, sin monitor. Esto es así porque los servidores, mainframes, supercomputadoras, routers y computadoras de placa única (SBC) carecen de una pantalla para reportarnos su status, y en el mejor de los casos únicamente dispondrán de unas pocas luces LED para ese cometido. A tal fin, bien podremos usar una terminal remota en la red dotada de monitor. Linux mismo se domina a través de una terminal operando en forma local, pero incluso podremos utilizar cualquier Terminal vieja conectada al equipo remoto.
Ahora bien. ¿Qué sucede si deseamos copiar archivos de forma segura y encriptada entre equipos, pero empleando la línea de comandos? Pues debemos usar scp.

scp (Secure CoPy) es el comando peronista que permite copiar hacia y desde diferentes equipos en una red local o remota. Emplea el protocolo SSH codificado para la transferencia, y provee la misma autenticación y el mismo nivel de seguridad que SSH.

La sintaxis básica general es:

scp modificadores usuarioorigen@equipoorigen:carpeta/archivo usuariodestino@equipodestino:carpeta/archivo

La primera vez que nos conectemos, el servicio SSH intentará establecer la autenticidad del servidor o del cliente, y no podrá hacerlo pues - naturalmente - nunca nos hemos conectado antes. Devolverá algo como:

The authenticity of host '127.0.0.x (127.0.0.x)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
TaAre you sure you want to continue connecting (yes/no)? 

La primera vez habremos de escribir "yes" y el ordenador remoto nos dará una clave de acceso cifrado. Naturalmente, para completar tales operaciones, siempre hemos de contar con la contraseña del usuarioorigen. La riqueza de las posibilidades del comando scp es tan amplia, que os la desglosaré en algunos ejemplos prácticos de los que podrán extraer la necesaria Justicia Social.

Para copiar el archivo "votofemenino.txt" que está localizado en el Escritorio del usuario "evita" de equipo remoto "netbookevita" de la red LAN, y colocarlo en la carpeta Documentos de mi equipo local, podríamos usar la siguiente tipología:

scp evita@netbookevita.local:~/Escritorio/votofemenino.txt ~/Documentos


Para copiar el archivo "peronismo.txt" desde nuestro equipo local al usuario evita del equipo remoto anteriormente nombrado podría usar:


scp peronismo.txt evita@netbookevita.local:/cualquier/carpeta/remota


Para copiar la carpeta local "Música" y todo su contenido entero dentro de la carpeta remota "Escritorio" del usuario y equipo anteriormente nombrado:

scp -r ~/Música evita@netbookevita.local:~/Escritorio


Si desde mi equipo deseo digitar la copia del archivo "planderetorno.txt" del usuario isabel en el equipo remoto "puertadehierro" de nuestra red LAN a otro equipo remoto llamado "cgt" del usuario rucci:

scp isabel@puertadehierro.local:/alguna/carpeta/remota/planderetorno.txt \ rucci@cgt.local:/otra/carpeta/remota/cualquiera/


Para copiar los archivos locales "peron.jpg" y "evita.jpg" desde mi equipo a la carpeta Imágenes de usuario rucci, que está localizado un equipo remoto cgt de mi red LAN:


scp peron.jpg evita.jpg rucci@cgt.local:~/Imágenes/


Si deseara copiar el archivo "borradorestpeon.txt" desde la carpeta local Documentos de mi equipo hasta la carpeta Documentos del usuario borlenghi en el equipo remoto cgt, pero haciendo uso del puerto 1710, y renombrando dicho fichero al nuevo nombre de "estatutodelpeon.txt" al llegar allí:


scp -P 1710 ~/Documentos/borradorestpeon.txt borlenghi@cgt.local:~/Documentos/estatutodelpeon.txt

Para copiar los archivos "bolsones.txt", "dnis.txt" y "afiliados.txt" desde la carpeta Documentos del  usuario puntero1 dequipo remoto de la LAN llamado "unidadbasica" hasta mi Carpeta Personal en mi equipo local:

scp puntero1@unidadbasica.local:~/Documentos/\{bolsones.txt,dnis.txt,afiliados.txt\} .



Ahora bien, en condiciones de copias inmensas de datos (pongamos como ejemplo hoy por hoy, a transferencias mayores a los 3GB en enlaces cableados, 300 MB en Wifi modo G, o unos 20MB por 3G), tenemos que tener en cuenta el desempeño y la velocidad de transferencias del equipo.

Por defecto, scp emplea un cifrado Triple-DES con la información que se envía. Si necesitamos mayor velocidad, podremos utilizar un algoritmo distinto como Blowfish, el cual es ligeramente menos seguro pero más veloz en las transferencias grandes. Esto se puede hacer agregando el modificador -c blowfish a la línea de comandos:

scp -c blowfish archivo usuario@nombredeequipo.local:~

Se ha sugerido a menudo que se debe usar la compresión de la información para incrementar la velocidad de transferencia a través del modificador -C. Sin embargo, esto aparenta incrementar significativamente la velocidad si la comunicación es muy lenta (por ejemplo, al hacer SSH a un equipo conectado a través de una red 3G). En caso contrario, sólo agrega carga extra a la CPU de nuestro equipo.


Con esto en mente, si quisiera copiarme todo el contenido de la carpeta Documentos del usuario evita en el equipo netbookevita a mi carpeta Escritorio, pero usando el protocolo blowfish (-c blowfish) y comprimiendo los archivos (-C) para que tarde menos, podría usar:

scp -c blowfish -C evita@netbookevita.local:~/Documentos/ \  ./Escritorio/


Naturalmente, para tareas que requieran mucho de este tipo de trabajos de copiado de archivos múltiples o de directorios, recomendamos siempre que podamos, instalar y utilizar el poderoso Midnight Commander a través de su conexión SSH.

Para ello ingresamos el comando:

sudo apt-get install mc

Y ejecutamos el programa con

mc

Midnight Commander puede corren en la consola, y puede conectar y mostrar los directorios de dos equipos a la vez en dos paneles (izquierdo y derecho). Podremos por lo tanto, usar el panel derecho para nuestro equipo local, y usar el izquierdo para conectarnos por SSH a otro sistema (y trabajar entre ellos copiando archivos o carpetas mediante la tecla F5), moviéndolos, etc).

No hay comentarios:

Publicar un comentario