So übertragen Sie Dateien über ssh, während ssh bereits auf dem Server gespeichert ist


12

Ich übertrage Dateien mit diesem Befehl

scp <localfile> user@host:<destination>

Der obige Befehl funktioniert nur, wenn ich nicht auf dem Server bin.

Wie übertrage ich lokale Dateien auf den Host-Computer, wenn ich bereits ssh'd bin?

Ich ssh in mit ssh user@hostname


2
Welches Betriebssystem? Öffnen Sie ein anderes Terminal und verwenden Sie den Befehl scp
Impulss

1
es ist centOS. Das habe ich bisher gemacht. Ich hatte nur auf etwas Bequemeres gehofft.
Allgegenwärtig

Antworten:


5

Gute Frage. scpwieder, aber umgekehrt. Ich habe es getan und hier ist es:

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 ~$ 

bearbeitet, um hinzuzufügen: Wie in den Kommentaren erwähnt, erfordert dies, dass der Remotecomputer auf den lokalen Computer zugreifen kann. Und sshd oder (openssh-server) muss auf dem lokalen Computer installiert sein und ausgeführt werden.


2
Dies setzt voraus, dass der lokale Computer von der Remote-Maschine aus erreichbar ist, und dies ist nicht immer der Fall.
Laurent

Wenn es jedoch wahr ist, wird es gut funktionieren.
Daviewales

3

Es wäre hilfreich zu wissen, was Sie auf dem Host-Computer ausführen. Wenn Sie Linux verwenden,

scp user@host:/path/myfile .

sollte arbeiten.


user @ host ist der Remote-Computer von dem, was ich in Frage verstanden habe. Dieser Befehl kopiert also keine Dateien vom lokalen Computer auf den Remote-Computer, sondern von der Remote auf den lokalen, wenn er nicht auf dem Host SSHed ist, und kopiert von der Remote auf sich selbst, wenn SSHed.
Laurent

Ich denke, die Frage enthält einige Unklarheiten. Mir user@hostscheint sich auf den Computer zu beziehen, den Sie derzeit nicht steuern. Wenn das OP nicht am Remotecomputer angemeldet ist, user@hostist dies der Remotecomputer. Wenn das OP am Remotecomputer angemeldet ist, user@hostist dies der lokale Computer. Wenn meine Annahmen richtig sind, ist diese Antwort sinnvoll.
Daviewales

Genau so habe ich auch die Frage interpretiert, daviewales. Außerdem haben Sie Recht, user @ host würde meiner Meinung nach jede Workstation darstellen, von der aus Sie derzeit NICHT arbeiten. Ich überlegte, ob ich das in meiner Antwort klarer machen sollte, dachte aber, dass dies impliziert sein würde.
Josh

Selbst wenn user @ host den lokalen Computer darstellt, wenn der Benutzer auf dem Remote-Computer angemeldet ist (unwahrscheinlich, da das OP angibt, dass er lokale Dateien auf den Host-Computer übertragen möchte), funktioniert dies nur, wenn auf den lokalen Computer von der Remote aus zugegriffen werden kann Ein (normalerweise, wenn sie sich im selben LAN befinden) und nicht in einem Szenario, in dem sich der Remotecomputer im Internet befindet und der lokale Computer keine feste IP hat.
Laurent

1

Wenn Sie einen Weg zurück zu Ihrem lokalen Computer haben (auf Ihren lokalen Computer kann über den Remotecomputer zugegriffen werden - normalerweise, wenn sich beide Computer im selben LAN befinden), sollte die Verwendung von scp vom Remotecomputer aus funktionieren ( scp local:/path-to-file .).

Wenn Ihr lokaler Computer nicht über den Remote-Computer erreichbar ist (normalerweise, wenn Ihr Remote-Computer ein VPS im Internet ist und Ihr lokaler Computer über eine dynamische IP-Adresse verfügt), öffnen Sie am besten ein neues Terminal auf dem lokalen Computer und kopieren Sie die Datei.

Eine andere Möglichkeit, die komplizierter und sicherlich nicht nur zum Kopieren von Dateien erforderlich ist, besteht darin, ein VPN zwischen den Computern (oder Netzwerken) herzustellen, sodass beide Computer vom anderen aus erreichbar sind und Sie scp von einem Computer oder vom anderen aus verwenden können.


0

während Sie am Remote-System angemeldet sind (einfacher, einfach in den Dateispeicherort zu wechseln) sudo scp file_location / file_name user @ host: file_location

während vom Remote-System abgemeldet sudo scp authoried_user @ hostname: file_location / file_name new_location_on_local_machine

Fußnote: Denken Sie daran, dass beim Abmelden von Remote-Systemen bei einem neuen Terminal das erste Kennwort das Sudo-Kennwort und das zweite Kennwort das autorisierte Benutzerkennwort ist. Wenn Sie zuvor in diesem bestimmten Terminal sudo-ed haben, ist es nur das autorisierte Benutzerpasswort, das Sie benötigen. Achten Sie auf diese, es macht es schwierig.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.