GNU/Linux >> Tutoriels Linux >  >> Linux

Ssh - Copier un fichier sur le système local avec Ssh ?

Si je suis connecté à un système via SSH, existe-t-il un moyen de copier un fichier sur mon système local sans lancer un autre terminal ou session d'écran et faire scp ou quelque chose de similaire ou sans faire SSH du système distant vers le système local ?

Réponse acceptée :

Connexion principale

C'est plus facile si vous planifiez à l'avance.

Ouvrez une connexion principale la première fois. Pour les connexions ultérieures, acheminez les connexions esclaves via la connexion principale existante. Dans votre ~/.ssh/config , configurez le partage de connexion pour qu'il s'exécute automatiquement :

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

Si vous démarrez une session ssh avec le même (utilisateur, port, machine) qu'une connexion existante, la deuxième session sera tunnelisée sur la première. L'établissement de la deuxième connexion ne nécessite aucune nouvelle authentification et est très rapide.

Ainsi, tant que votre connexion est active, vous pouvez rapidement :

  • copier un fichier avec scp ou rsync;
  • monter un système de fichiers distant avec sshfs.

Transfert

Sur une connexion existante, vous pouvez établir un tunnel ssh inversé. Sur la ligne de commande ssh, créez un transfert à distance en passant -R 22042:localhost:22 où 22042 est un numéro choisi au hasard qui est différent de tout autre numéro de port sur la machine distante. Puis ssh -p 22042 localhost sur la machine distante vous reconnecte à la machine source ; vous pouvez utiliser scp -P 22042 foo localhost: pour copier des fichiers.

Vous pouvez automatiser davantage cela avec RemoteForward 22042 localhost:22 . Le problème avec ceci est que si vous vous connectez au même ordinateur avec plusieurs instances de ssh, ou si quelqu'un d'autre utilise le port, vous n'obtenez pas le transfert.

Si vous n'avez pas activé un transfert à distance depuis le début, vous pouvez le faire sur une session ssh existante. Tapez Entrée ~C Entrez -R 22042:localhost:22 Entrez .
Voir "Caractères d'échappement" dans le manuel pour plus d'informations.

Il y a aussi des informations intéressantes dans ce fil de discussion Server Fault.

Copier-coller

Si le fichier est petit, vous pouvez le saisir et le copier-coller à partir de la sortie du terminal. Si le fichier contient des caractères non imprimables, utilisez un encodage tel que base64.

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

Plus commodément, si le transfert X est actif, copiez le fichier sur la machine distante et collez-le localement. Vous pouvez diriger les données vers et depuis xclip ou xsel . Si vous souhaitez conserver le nom du fichier et les métadonnées, copiez-collez une archive.

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

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

Linux
  1. Commande SCP Linux - Comment transférer un fichier SSH de distant à local

  2. Comment copier un fichier d'un serveur distant vers une machine locale ?

  3. Copier des fichiers avec SCP et Rsync

  4. Comment revenir à scp local alors que j'ai déjà sshed sur une machine distante?

  5. SSH avec des clés autorisées à un système Ubuntu avec un répertoire personnel crypté ?

Améliorez les performances du système Linux avec noatime

Comment créer un serveur de fichiers personnel avec SSH sous Linux

Commandes SSH sous Linux avec exemples d'utilisation

SSHFS :montage d'un système de fichiers distant via SSH

Lsyncd - Synchroniser les répertoires locaux avec Linux distant

Puis-je utiliser l'authentification par clé SSH pour me connecter à un système distant avec un nom d'utilisateur différent ?