Recientemente, analizamos el rsync
comando para sincronizar archivos entre ubicaciones, y discutimos la similitud de uso y sintaxis al duplicar archivos y directorios con el cp
dominio. En ese artículo, analizamos cómo mover los bits hacia adelante y hacia atrás en la misma caja, entre sistemas de archivos o entre dispositivos. En un próximo artículo, veremos más en rsync
como una herramienta para mantener los sistemas de archivos remotos sincronizados con una versión local o de respaldo. En este artículo, quiero echar un vistazo a una de las herramientas más útiles y utilizadas en la caja de herramientas del administrador de sistemas de Linux:el scp
comando.
¿Qué es SCP?
Copia segura, o scp
, es una versión segura del antiguo rcp
(que todavía se usa, pero es menos común) incluida en el conjunto de herramientas de OpenSSH.
OpenSSH comenzó como una bifurcación BSD del protocolo de comunicaciones seguras SSH original, que desde entonces se volvió a licenciar como "no libre" y, por lo tanto, generalmente no está disponible para Linux. OpenSSH todavía se mantiene bajo la licencia BSD y está disponible para una amplia gama de plataformas. Incluye varias herramientas comunes para el acceso remoto seguro, incluida la generación de claves, scp
y sftp
(una versión segura de FTP, a la que llegaremos en un momento).
Recientemente, los desarrolladores de OpenSSH han indicado que consideran scp
estar en desuso (creen que es "Obsoleto, inflexible y difícil de arreglar"). No está claro cuándo dejará de estar disponible en versiones futuras de OpenSSH, aunque es difícil imaginar que dejará de estar disponible pronto.
Usar SCP
La utilidad de scp
reside en su sencillez. Lo uso para mover rápidamente archivos a un sistema de archivos remoto desde el shell:
skipworthy ~ scp ./enable/foo/testfoo showme:/home/skipworthy/enable
skipworthy@showme's password:
testfoo 100% 25 8.0KB/s 00:00
Muy fácil. También puedo obtener un archivo desde una ubicación remota:
skipworthy ~ scp showme:/home/skipworthy/enable/demofoo ~/enable/
skipworthy@showme's password:
demofoo 100% 0 0.0KB/s 00:00
skipworthy ~ ls ./enable
bar demofoo foo
Las opciones de conexión disponibles son las mismas que con ssh
. Por ejemplo:
skipworthy ~ scp -P 2020 -i ~/.ssh/id_rsa ./test.txt showme:/home/skipworthy/enable/
test.txt 100% 0 0.0KB/s 00:00
-P
especifica el puerto para el ssh
conexión, -i
especifica un ssh
clave de identificación para usar para la autenticación:ambas opciones son útiles para los scripts. Tenga en cuenta que scp -P
difiere del ssh -p
para especificar el puerto. En el ejemplo anterior, establecí la ubicación de un ssh
clave (~/.ssh/id_rsa
), que también generé con el kit de herramientas de OpenSSH, para autenticar el acceso al dispositivo remoto. Obtén más información sobre las copias de archivos SSH aquí.
Para que puedas ver scp
es una herramienta realmente útil para tener a tu alcance. Existe cierta discusión sobre la conveniencia de usar esta herramienta en un entorno seguro, por lo que YMMV. Te sugiero que leas un poco y decidas por ti mismo.
[ También te puede interesar: herramientas de administrador de sistemas:uso de rsync para administrar copias de seguridad, restauración y sincronización de archivos]
Alternativas
¿Qué pasa si, por alguna razón, no podemos usar scp
? ? Recomiendo otras dos opciones que son bastante fáciles de usar:rsync
, del que hemos hablado aquí y del que hablaremos más en profundidad en otro artículo, y sftp
. Si bien ninguna de estas opciones es tan conveniente como scp
, ambos tienen algunas características útiles.
sftp
es más o menos lo que parece:FTP seguro. Actúa como FTP sobre una conexión administrada por SSH. Si bien no es tan simple de usar como el "uno y listo" scp
comando, ofrece una gama de opciones de sistema de archivos más sofisticadas y la capacidad de conectarse a un sistema de archivos remoto de forma interactiva. Requiere que el sistema de archivos de destino esté configurado para sftp
acceso.
Conectémonos a un sftp
servidor de forma interactiva:
skipworthy ~ sftp enable@ganymede
enable@ganymede's password:
Connected to ganymede.
sftp> pwd
Remote working directory: /upload
sftp> mkdir test
sftp> ls -al
drwxr-xr-x 3 1002 1002 18 Nov 24 21:53 .
drwxr-xr-x 3 0 1002 20 Nov 24 21:33 ..
drwxr-xr-x 2 1002 1002 6 Nov 24 21:53 test
Si pulsamos Tab dos veces, podemos ver una lista de comandos disponibles en el shell:
sftp>
bye cd chdir chgrp chmod chown df dir
exit get help lcd lchdir lls lmkdir ln
lpwd ls lumask mkdir mget mput progress put
pwd quit reget rename reput rm rmdir symlink
version ! ?
Entonces puede ver que es posible interactuar con el sistema de archivos remoto. Una vez más, las principales desventajas son que el objetivo debe configurarse para sftp
el administrador de ese sistema debe configurar y limitar el acceso y el acceso a un directorio específico. Esto lo convierte en una opción más segura, aunque menos conveniente, que scp
. Además, tenga en cuenta que si bien no es realmente posible realizar transferencias de archivos improvisadas como scp
, es posible escribir secuencias de comandos e insertar alias de shell para que esto funcione sin problemas si ese es su problema.
[ ¿Está pensando en la seguridad? Consulte esta guía gratuita para impulsar la seguridad de la nube híbrida y proteger su empresa. ]
Resumir
Nota final:ambas herramientas se basan en la caja de herramientas SSH, que es una parte muy importante de la administración de sistemas Linux, por lo que recomiendo familiarizarse con ella. Considere estos excelentes artículos de los escritores de Enable Sysadmin:
- Cómo SSH establece una comunicación segura
- Ocho formas de proteger el acceso SSH en su sistema
- SSH sin contraseña mediante pares de claves públicas y privadas