Comment transférer des fichiers via ssh alors qu'ils sont déjà ssh dans le serveur

13

Je transfère des fichiers à l'aide de cette commande

scp <localfile> user@host:<destination>

La commande ci-dessus ne fonctionne que lorsque je ne suis pas connecté au serveur.

Comment puis-je transférer des fichiers locaux sur la machine hôte alors que je suis déjà connecté?

Je ssh en utilisant ssh user@hostname

Omniprésent
la source
2
Quel OS? Ouvrez un autre terminal et utilisez la commande scp
Impulss
1
c'est centOS. C'est ce que j'ai fait jusqu'à présent. J'espérais juste quelque chose de plus pratique.
omniprésent

Réponses:

5

Bonne question. scpencore une fois, mais le contraire. Je l'ai fait et le voici:

chris@local ~$ ls hos*
hosts
chris@local ~$ ssh remote
Last login: Fri Mar  8 15:52:25 2013 from local
chris@remote ~$ scp chris@local:hos* .
chris@local's password: 
hosts                                              100% 1850     1.8KB/s   00:00    
chris@remote ~$ ls hos*
hosts
chris@remote ~$ 

modifié pour ajouter: comme indiqué dans les commentaires, cela nécessite que l'ordinateur distant puisse accéder à l'ordinateur local. Et sshd ou (openssh-server) doit être installé et exécuté sur la machine locale.

Chris K
la source
3
Cela suppose que la machine locale est accessible à partir de la machine distante et ce n'est pas toujours vrai.
laurent
Cependant, si c'est vrai, cela fonctionnera bien.
daviewales
3

Il serait utile de savoir ce que vous exécutez sur la machine hôte. Si vous utilisez Linux,

scp user@host:/path/myfile .

devrait marcher.

Josh
la source
user @ host est la machine distante d'après ce que j'ai compris sur Question, donc cette commande ne copiera pas les fichiers de la machine locale vers la télécommande mais de la télécommande vers la locale si elle n'est pas SSH dans l'hôte et copiera de la télécommande vers elle-même si SSHed.
laurent
Je pense qu'il y a une certaine ambiguïté dans la question. Pour moi, user@hostsemble se référer à n'importe quel ordinateur que vous ne contrôlez pas actuellement. Ainsi, lorsque l'OP n'est pas connecté à l'ordinateur distant, user@hostl'ordinateur distant l'est également. Lorsque l'OP est connecté à l'ordinateur distant, user@hostc'est l'ordinateur local. Si mes hypothèses sont correctes, cette réponse est logique.
daviewales
C'est exactement ainsi que j'ai interprété la question, daviewales. De plus, vous avez raison, user @ host représenterait le poste de travail sur lequel vous ne travaillez PAS actuellement, à mon avis. J'ai débattu de l'opportunité de le préciser dans ma réponse, mais j'ai pensé que ce serait implicite.
Josh
Quoi qu'il en soit, même si user @ host représente la machine locale lorsque l'utilisateur est connecté à la machine distante (peu probable car l'OP a dit qu'il veut transférer des fichiers locaux vers la machine hôte), cela ne fonctionnera que si la machine locale est accessible depuis la télécommande activé (généralement s'ils se trouvent sur le même réseau local) et non dans un scénario où la machine distante est sur Internet et la machine locale n'a pas d'adresse IP fixe.
laurent
0

Si vous avez un moyen de revenir à votre ordinateur local (votre ordinateur local est accessible à partir de l'ordinateur distant - généralement lorsque les deux ordinateurs sont sur le même réseau local), l'utilisation de scp à partir de l'ordinateur distant devrait fonctionner ( scp local:/path-to-file .).

Si votre ordinateur local ne peut pas être atteint depuis l'ordinateur distant (généralement vrai si votre télécommande est un VPS sur Internet et que votre ordinateur local a une IP dynamique), votre meilleure façon est d'ouvrir un nouveau terminal sur l'ordinateur local et de copier le fichier.

Une autre façon, plus compliquée et certainement pas seulement nécessaire de copier un fichier, serait de créer un VPN entre les machines (ou réseaux) afin que les deux machines soient accessibles de l'autre et que vous puissiez utiliser scp d'une machine ou de l'autre.

laurent
la source
-1

tout en étant connecté au système distant (plus facile de simplement cd dans l'emplacement du fichier) sudo scp emplacement_fichier / nom_fichier utilisateur @ hôte: emplacement_fichier

tout en étant déconnecté du système distant sudo scp authoried_user @ hostname: file_location / file_name new_location_on_local_machine

REMARQUE: rappelez-vous, lorsque vous êtes déconnecté des systèmes distants, s'il s'agit d'un nouveau terminal, le premier mot de passe sera le mot de passe sudo, le deuxième mot de passe sera le mot de passe utilisateur autorisé. si vous avez déjà créé un module dans ce terminal particulier, c'est juste le mot de passe utilisateur autorisé dont vous avez besoin. surveillez-les, cela rend les choses délicates.

obalolu
la source