GNU/Linux >> Tutoriales Linux >  >> Linux

Ssh:¿Copiar un archivo de nuevo al sistema local con Ssh?

Si he iniciado sesión en un sistema a través de SSH, ¿hay alguna manera de volver a copiar un archivo en mi sistema local sin activar otra terminal o sesión de pantalla y hacer scp o algo similar o sin hacer SSH desde el sistema remoto de vuelta al sistema local?

Respuesta aceptada:

Conexión maestra

Es más fácil si planifica con anticipación.

Abra una conexión maestra la primera vez. Para conexiones posteriores, enrute las conexiones esclavas a través de la conexión maestra existente. En tu ~/.ssh/config , configura la conexión compartida para que se realice automáticamente:

ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r

Si inicia una sesión ssh con el mismo (usuario, puerto, máquina) que una conexión existente, la segunda sesión se tunelizará sobre la primera. Establecer la segunda conexión no requiere una nueva autenticación y es muy rápido.

Entonces, mientras tenga su conexión activa, puede rápidamente:

  • copiar un archivo con scp o rsync;
  • montar un sistema de archivos remoto con sshfs.

Reenvío

En una conexión existente, puede establecer un túnel ssh inverso. En la línea de comando ssh, cree un reenvío remoto pasando -R 22042:localhost:22 donde 22042 es un número elegido al azar que es diferente de cualquier otro número de puerto en la máquina remota. Luego ssh -p 22042 localhost en la máquina remota lo vuelve a conectar con la máquina de origen; puede usar scp -P 22042 foo localhost: para copiar archivos.

Puede automatizar esto aún más con RemoteForward 22042 localhost:22 . El problema con esto es que si te conectas a la misma computadora con múltiples instancias de ssh, o si alguien más está usando el puerto, no obtienes el reenvío.

Si no ha habilitado un reenvío remoto desde el principio, puede hacerlo en una sesión ssh existente. Escriba Intro ~C Entrar -R 22042:localhost:22 Entrar .
Consulte "Caracteres de escape" en el manual para obtener más información.

También hay información interesante en este hilo de error del servidor.

Copiar y pegar

Si el archivo es pequeño, puede escribirlo y copiarlo y pegarlo desde la salida del terminal. Si el archivo contiene caracteres no imprimibles, utilice una codificación como base64.

remote.example.net$ base64 <myfile
(copy the output)
local.example.net$ base64 -d >myfile
(paste the clipboard contents)
Ctrl+D

Más convenientemente, si tiene el reenvío X activo, copie el archivo en la máquina remota y péguelo localmente. Puede canalizar datos dentro y fuera de xclip o xsel . Si desea conservar el nombre del archivo y los metadatos, copie y pegue un archivo.

remote.example.net$ tar -czf - myfile | xsel

local.example.net$ xsel | tar -xzf -

Linux
  1. Mejore el rendimiento del sistema Linux con noatime

  2. Comando SCP Linux:cómo transferir archivos SSH de remoto a local

  3. ¿Cómo volver a scp a local cuando ya he ingresado a la máquina remota?

  4. ¿SSH con Authorized_keys a un sistema Ubuntu con homedir encriptado?

  5. ¿Cómo copio el archivo cuyo nombre comienza con un punto?

Cómo crear un servidor de archivos personal con SSH en Linux

Comandos SSH en Linux con ejemplos de uso

SSHFS:Montaje de un sistema de archivos remoto a través de SSH

Lsyncd:sincroniza directorios locales con Linux remoto

iptables redirigen las conexiones locales al sistema/puerto remoto

¿Puedo usar la autenticación de clave SSH para iniciar sesión en un sistema remoto con un nombre de usuario diferente?