Sé que puedo usar el comando scp y copiar cualquier archivo siempre que pueda venir con el cliente ssh.
Pero veamos con más detalle. Supongamos que YA he iniciado sesión con el cliente ssh. Esto significa que YA he ingresado el nombre del servidor y el nombre y la contraseña del usuario. Supongamos también que hice algunos cd
s. Esto significa que YA he ingresado el directorio de destino.
No quiero ingresar esta información OTRA VEZ. Simplemente no veo ninguna razón para hacer ningún trabajo dos veces.
Ahora quiero CARGAR algún archivo en ESE lugar, donde ya estoy.
¿Es posible hacer eso?
En los tiempos de los módems telefónicos, había varios protocolos, lo que permitía al servidor iniciar la carga de archivos por parte del cliente. Si ingresé algún comando, mi cliente terminal estaba abriendo el cuadro de diálogo de selección de archivo y pude seleccionar el archivo para cargar.
Pasaron décadas. ¿Es esto posible ahora en el siglo 21?
ZModem Upload
en el menú. Por supuesto, tendría que tener el software correcto en el lado del servidor, lo cual es poco probable en estos días.Respuestas:
No sé si este método es más fácil que simplemente usar scp, y voy a hacer muchas suposiciones sobre qué cliente ssh está usando y qué sistema operativo tienen sus máquinas de origen y destino. Solo espero que esto sea útil.
Si ya ha iniciado sesión en la máquina y desea transferir un archivo sin tener que iniciar sesión nuevamente, puede abrir un túnel como este:
ssh>
ssh> -L 4444:localhost:4444 Forwarding port.
nc -l 4444 > my_file.txt
Esto escuchará en el puerto 4444 y enviará la salida a my_file.txt
nc localhost 4444 < my_file.txt
Y eso enviará my_file.txt a través del túnel reenviado ssh a la máquina remota, y netcat (comando nc) lo canalizará al archivo en la máquina remota. Si desea transferir un directorio completo, use
tar
y redirija a la entrada estándar y desde la salida estándar. (man tar
es tu amigo)fuente
Si está usando algo como SecureCRT (Windows) o iTerm2 (Mac), puede usar Zmodem para transferir archivos de un lado a otro sin usar scp / nc / etc. Lo uso para mover archivos rápidamente de un lado a otro sin tener que abrir una segunda sesión. El servidor Unix necesitará tener instalado el paquete lrzsz; algunas distribuciones lo tienen instalado de manera predeterminada, otras no.
Si está utilizando SecureCRT, puede ejecutar "sz filename.txt" y la transferencia comenzará automáticamente; ejecutando "rz" aparecerá un cuadro de selección de archivo. Si está en iTerm2, tiene que hacer un poco de configuración para que funcione, comenzando con la instalación del paquete lrzsz (a través de Homebrew u otro administrador de paquetes), y luego configure iTerm2 para escuchar la secuencia de caracteres de Zmodem. Eso se describe aquí: https://github.com/aurora/iterm2-zmodem
fuente