Subir a SSH de manera XMODEM?

3

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 cds. 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?

Dims
fuente
Creo que sí. Mi emulador de terminal (Konsole) tiene una opción ZModem Uploaden 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.
BenjiWiebe

Respuestas:

1

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:

  • En la línea de comando, escriba ~ C, ingresará a la consola de comandos de ssh:

ssh>

  • Escriba -L 4444: localhost: 4444 para reenviar el puerto 4444 en su máquina local al puerto 4444 en la máquina remota

ssh> -L 4444:localhost:4444 Forwarding port.

  • Cuando vuelva a ver su mensaje en su máquina remota, ingrese:

nc -l 4444 > my_file.txt

Esto escuchará en el puerto 4444 y enviará la salida a my_file.txt

  • Ahora, en su máquina local, usted hace:

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 tary redirija a la entrada estándar y desde la salida estándar. ( man tares tu amigo)

Juan carlos muñoz
fuente
Encuentro que tengo que especificar el puerto de escucha con -p o se ignora. Y no finaliza automáticamente para archivos que no incluyen un EOF.
Perkins
1

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

jdm404
fuente