Linux: Copiado de archivos entre computadoras
noviembre 27, 2011 4 comentarios
Este tema es un poco similar a la transferencia de archivos vía FTP, del cuál, ya cubro tema en Comandos para red. Sin embargo, es un tanto distinto, dado que con los permisos necesarios, se pueden copiar archivos con una simple instrucción sin tener que cambiar entre directorios y hacer los movimientos clásicos de un FTP.
Muy bien, vamos a comenzar, vamos a suponer que desde un servidor cualquiera, quiero hacer una copia de distintos archivos a mi computadora.
1. Servicio ssh en computadora destino
Para que cualquiera pueda copiar archivos a mi computadora desde un servidor, se requiere que mi computadora, tenga habilitado el servicio ssh. Para verificar si se tiene o no activado, podemos auxiliarnos del comando nmap con el formato:
nmap nombre_servidor|dirección_ip
En este caso, como quiero verificar los servicios en mi laptop, usaré el localhost como les muestro a continuación:
orlando_olguin@metallilaptop:~$ nmap localhost Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-25 18:48 CST Nmap scan report for localhost (127.0.0.1) Host is up (0.0011s latency). Not shown: 998 closed ports PORT STATE SERVICE 631/tcp open ipp 8089/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
Como se puede ver, no tengo activado dicho servicio, por lo que para levantarlo, hay que usar el comando service por medio del sudo como se ve a continuación:
orlando_olguin@metallilaptop:~$ sudo service ssh start ssh start/running, process 6109
Con esto, si vuelvo a ejecutar el comando nmap, podré ver nuevamente los servicios que se encuentran activos:
orlando_olguin@metallilaptop:~$ nmap localhost Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-25 18:52 CST Nmap scan report for localhost (127.0.0.1) Host is up (0.0013s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 631/tcp open ipp 8089/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
Con lo cual, se confirma que ya se encuentra levantado el servicio ssh.
2. Conexión al servidor de copia
Muy bien, ahora hay que conectarse al servidor desde el cual, realizaré la copia hacia mi computadora:
orlando_olguin@metallilaptop:~$ ssh root@192.168.2.139 root@192.168.2.139's password: Last login: Fri Nov 25 16:05:19 2011 from 192.168.2.209 /root>
3. Localizar archivos a copiar
Ya estando en el servidor desde el cual, se realizará la copia, hay que ubicar los archivos que se copiarán. En este caso para mi ejemplo, usaré los archivos con extensión log:
/root> ls *.log install.log sqlnet.log
4. Ubicar directorio destino
Antes de pasar al siguiente punto del copiado, es necesario verificar que existe un directorio en la computadora o servidor destino. Añadiré a este punto la verificación de que no existen los archivos a copiar:
orlando_olguin@metallilaptop:~$ pwd /home/orlando_olguin orlando_olguin@metallilaptop:~$ cd downloads orlando_olguin@metallilaptop:~/downloads$ pwd /home/orlando_olguin/downloads orlando_olguin@metallilaptop:~/downloads$ ls *.log ls: cannot access *.log: No such file or directory
5. Verificar la dirección IP destino
Otro punto necesario, es ubicar la dirección IP de la computadora destino. En este caso la de mi computadora. Como estoy conectado vía alámbrica, podré elegir la interface eth0:
orlando_olguin@metallilaptop:~/downloads$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:26:b9:be:67:8a inet addr:192.168.2.164 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::226:b9ff:febe:678a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7516388 errors:0 dropped:0 overruns:0 frame:0 TX packets:2893168 errors:0 dropped:0 overruns:0 carrier:1 collisions:0 txqueuelen:1000 RX bytes:2189477587 (2.1 GB) TX bytes:224104127 (224.1 MB) Interrupt:44
Con esto, ya verifiqué que mi dirección IP, es la 192.168.2.164.
6. Copiar archivos
Ya con toda la información recabada, se puede hacer la copia de los archivos, el formato del comando es como se muestra a continuación. Nota. También se requiere la contraseña del usuario de la computadora o servidor destino:
scp archivos_a_copiar usuario@dirección_ip|nombre_servidor:/directorio
De tal forma que al estar en el servidor origen, la ejecución del comando queda como:
/root> scp *.log orlando_olguin@192.168.2.164:/home/orlando_olguin/downloads The authenticity of host '192.168.2.164 (192.168.2.164)' can't be established. RSA key fingerprint is 0a:3f:80:cc:ce:4a:9d:f6:12:59:84:0b:ac:60:77:c7. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.164' (RSA) to the list of known hosts. orlando_olguin@192.168.2.164's password: install.log 100% 38KB 38.4KB/s 00:00 sqlnet.log 100% 5555 5.4KB/s 00:0
7. Verificar archivos en la computadora destino
Después de la copia de los archivos, nos restará verificar que se hayan copiado correctamente:
orlando_olguin@metallilaptop:~/downloads$ ls *.log install.log sqlnet.log
8. Desactivar el servicio ssh
Para finalizar con el desactivado del servicio ssh en mi computadora por seguridad:
orlando_olguin@metallilaptop:~/downloads$ sudo service ssh stop [sudo] password for orlando_olguin: ssh stop/waiting
Verificando también que efectivamente ya no está disponible dicho servicio:
orlando_olguin@metallilaptop:~/downloads$ nmap localhost Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-25 18:57 CST Nmap scan report for localhost (127.0.0.1) Host is up (0.00070s latency). Not shown: 998 closed ports PORT STATE SERVICE 631/tcp open ipp 8089/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
Conclusiones
Con esto, se demuestra cómo se puede realizar la copia de archivos entre computadoras y/o servidores, sin la necesidad de pasar por una transferencia FTP.
Espero les sea de utilidad.
Si la información de este post te ha sido de utilidad o quieres que agregue algo más, deja por favor un comentario, contestaré a la brevedad.
Muy bien Orlando pero el scp no se acaba ahi, hay más maneras de copiar (sin hacer previamente un ssh) por ejemplo:
-Copiar un archivo de un host remoto en el directorio donde estoy
scp usuario@host:archivo ./
-Copiar un directorio remoto en un directorio local
scp -r usuario@host:/ruta/dirRemoto/ /tmp/
-Copiar archivos entre hosts remotos
scp usuario1@host1:/rutahost1/archivoHost1 usuario2@host2:/rutahost2/archivoHost2
Saludos!!!!
Muy buenos puntos Oscar, lo dejé hasta ese punto porque es lo que más he usado.
Orlando.
Al hacer todo esto que mencionas me sale la leyenda acceso denegado, ¿sabes por qué? el usuario que utilizo es el root.
Hola Calixto.
Si sólo te aparece acceso denegado como mensaje es probable que ocurra alguna o varias de las siguientes situaciones:
– La contraseña que estás usando es incorrecta,
– cuando te conectas a un servidor, se genera una llave que genera un vínculo de confianza entre tu computadora y el servidor, puede estar incorrecta, bórrala y generas una nueva,
– el usuario está deshabilitado o
– el usuario está habilitado sólo para que te conectes directamente en el servidor o de alguna dirección IP especial.
Espero que esto te sirva.
Orlando.