GNU/Linux >> Linux Esercitazione >  >> Linux

Ssh:copia un file sul sistema locale con Ssh?

Se ho effettuato l'accesso a un sistema tramite SSH, c'è un modo per copiare un file sul mio sistema locale senza avviare un altro terminale o una sessione dello schermo e fare scp o qualcosa di simile o senza eseguire SSH dal sistema remoto al sistema locale?

Risposta accettata:

Connessione principale

È più facile se pianifichi in anticipo.

Aprire una connessione master la prima volta. Per le connessioni successive, instradare le connessioni slave attraverso la connessione master esistente. Nel tuo ~/.ssh/config , imposta la condivisione della connessione in modo che avvenga automaticamente:

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

Se avvii una sessione ssh sulla stessa (utente, porta, macchina) di una connessione esistente, la seconda sessione verrà trasferita sulla prima. Stabilire la seconda connessione non richiede una nuova autenticazione ed è molto veloce.

Quindi, mentre hai la tua connessione attiva, puoi rapidamente:

  • copia un file con scp o rsync;
  • monta un filesystem remoto con sshfs.

Inoltro

Su una connessione esistente, puoi stabilire un tunnel ssh inverso. Sulla riga di comando ssh, crea un inoltro remoto passando -R 22042:localhost:22 dove 22042 è un numero scelto casualmente diverso da qualsiasi altro numero di porta sulla macchina remota. Quindi ssh -p 22042 localhost sulla macchina remota ti riconnette alla macchina di origine; puoi usare scp -P 22042 foo localhost: per copiare i file.

Puoi automatizzarlo ulteriormente con RemoteForward 22042 localhost:22 . Il problema è che se ti connetti allo stesso computer con più istanze di ssh o se qualcun altro sta usando la porta, non ottieni l'inoltro.

Se non hai abilitato un inoltro remoto dall'inizio, puoi farlo su una sessione ssh esistente. Digita Invio ~C Entra -R 22042:localhost:22 Entra .
Per ulteriori informazioni, vedere "Caratteri di escape" nel manuale.

Ci sono anche alcune informazioni interessanti in questo thread di errore del server.

Copia-incolla

Se il file è piccolo, puoi digitarlo e copiarlo e incollarlo dall'output del terminale. Se il file contiene caratteri non stampabili, utilizza una codifica come base64.

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

Più convenientemente, se hai l'inoltro X attivo, copia il file sulla macchina remota e incollalo localmente. Puoi inviare i dati dentro e fuori xclip o xsel . Se vuoi preservare il nome del file e i metadati, copia e incolla un archivio.

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

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

Linux
  1. Comando SCP Linux – Come trasferire file SSH da remoto a locale

  2. Come copiare un file da un server remoto su una macchina locale?

  3. controlla se il file esiste sull'host remoto con ssh

  4. SSH con authorized_keys su un sistema Ubuntu con homedir crittografato?

  5. Come posso copiare l'output da un comando remoto negli appunti locali?

Come creare un file server personale con SSH su Linux

Comandi SSH in Linux con esempi di utilizzo

SSHFS:montaggio di un file system remoto su SSH

Lsyncd:sincronizza le directory locali con Linux remoto

iptables reindirizza le connessioni locali al sistema/porta remoto

File system distribuito con cache su disco locale