Przenieś pliki do / z sesji Jestem zalogowany w PuTTY

85

Jestem zalogowany do zdalnego hosta za pomocą PuTTY.

Jakie polecenie przesyła pliki z mojego komputera lokalnego do komputera, na którym jestem zalogowany w PuTTY?

niebieskie niebo
źródło

Odpowiedzi:

73

Prawdopodobnie nie jest to bezpośrednia odpowiedź na to, o co pytasz, ale kiedy muszę przesłać pliki przez sesję SSH, używam WinSCP , który jest doskonałym programem do przesyłania plików przez SCP lub SFTP. Oczywiście zakłada się, że korzystasz z systemu Windows.

Guido Domenici
źródło
Próbowałem WinScp, ale muszę uruchomić polecenie na skrzynce, aby uzyskać uprawnienia. Nie wydaje się to możliwe przy użyciu WinScp?
błękitne niebo,
@ user470184: poprawne. Zwykle używam Putty i WinSCP obok siebie. W rzeczywistości możesz zacząć od WinSCP, a następnie jest menu kontekstowe, aby „otworzyć tę witrynę w Putty”, jeśli chcesz.
Guido Domenici
@GuidoDomenici Zobacz moje doświadczenia z WinSCP tutaj: ux.stackexchange.com/q/35936/4424 :-)
corsiKa
1
blue-sky: Aby zrobić sudow WinSCP, zobacz FAQ Jak zmienić użytkownika po zalogowaniu (np. su root)?
Martin Prikryl
WinSCP nie łączy się z serwerem, ponieważ serwer używa poświadczeń według klucza prywatnego. WinSCP nie obsługuje klucza SSH-1. Szukam programu do obsługi tego typu kluczy. Czy masz jakies pomysły?
mishanon
43

  • Kliknij menu Start.
  • Kliknij Uruchom
  • W otwartym polu wpisz cmd, a następnie kliknij OK
  • W wierszu polecenia wprowadź:

    c:> pscp nazwa_pliku_źródłowego id_użytkownika @ nazwa_serwera: / ścieżka / nazwa_pliku_docelowego.

Na przykład:

c:> pscp november2012 [email protected]: / mydata / november2012.

  • Po wyświetleniu monitu wprowadź hasło do serwera.

Cieszyć się

Sheshrao Wankhede
źródło
14
Możesz to odwrócić w następujący sposób: 'c:> pscp [email protected]: / mydata / november2012 november2012', aby odebrać pliki ze zdalnego komputera.
xan
3
pscp jest częścią pakietu kit, ale nie było na mojej ścieżce, więc musiałem dodać go do mojej ścieżki, zanim to zadziałało. pscp powinien znajdować się w tym samym miejscu, co plik exe putty. w moim przypadku c: \ Program Files (x86) \ PuTTY.
Frek
A jeśli po zalogowaniu będziemy musieli zmienić użytkowników? sudo su - user
Stevoisiak
1
Jeśli nie zainstalowałeś całego pakietu PuTTY, będziesz musiał pobrać program pscp oddzielnie ze strony chiark.greenend.org.uk/~sgtatham/putty/latest.html
James Newton
17

PuTTY zwykle jest dostarczany z klientem o nazwie psftp, którego można w tym celu wykorzystać. Nie wierzę, że możesz to zrobić za pomocą standardowego klienta PuTTY (chociaż mogę się w tej kwestii udowodnić).

PuTTY umożliwia tylko manipulowanie maszyną zdalną. Nie zapewnia bezpośredniego połączenia między dwoma systemami plików, tak samo jak siedzenie na zdalnym komputerze.

corsiKa
źródło
psftp nie jest zainstalowany na zdalnym komputerze
blue-sky
4
Nie musi. Tylko na twoim lokalnym komputerze.
corsiKa
A oto informacje dotyczące przesyłania plików za pomocą psftp: pic.dhe.ibm.com/infocenter/tsmscv13/v1r0m0/ ...
shasi kanth
8

Nie ma możliwości zainicjowania transferu plików z powrotem do / z lokalnego systemu Windows z sesji SSH otwartej w oknie PuTTY.

Chociaż PuTTY obsługuje udostępnianie połączenia.

Chociaż nadal musisz uruchomić kompatybilnego klienta przesyłania plików ( pscplub psftp), nie jest wymagane nowe logowanie, automatycznie (jeśli jest włączone) wykorzystuje istniejącą sesję PuTTY.

Aby włączyć udostępnianie, zobacz:
Udostępnianie połączenia SSH między narzędziami PuTTY .


Alternatywnym sposobem jest użycie WinSCP, klienta GUI SFTP / SCP. Podczas przeglądania zdalnej witryny możesz w dowolnym momencie otworzyć terminal SSH w tej samej witrynie za pomocą przycisku Otwórz w PuTTY .

Zobacz sesję otwarcia w PuTTY .

Dzięki dodatkowej konfiguracji możesz nawet sprawić, by PuTTY automatycznie nawigował do tego samego katalogu, który przeglądasz za pomocą WinSCP.

Zobacz Otwieranie PuTTY w tym samym katalogu .

(Jestem autorem WinSCP)

Martin Prikryl
źródło
1
Martin, WinSCP to świetna robota - dobra robota. I bardzo dziękuję :-)
shadowf
6

Jeśli jest to tylko jeden plik, możesz zastosować następującą procedurę (w kitu):

  1. vi nazwa_pliku.rozszerzenie (otwiera nową nazwę pliku w aktywnym folderze na serwerze),
  2. kopiuj + prawy przycisk myszy podczas nakładania kitu (kopiuj i wklej),
  3. edytować i zapisywać. => polecenia edytora vi

Edytuj uprawnienia do plików następną komendą: chmod u + x nazwa_pliku.rozszerzenie

mggluscevic
źródło
Działa to zadziwiająco dobrze w przypadku plików tekstowych, które zmieszczą się w schowku. W przypadku plików binarnych zobacz xxd, ale będziesz także potrzebować programu Windows do konwersji plików binarnych na hex. np. HEXDUMP
James Newton
4

Ponieważ pytałeś o to do / z, oto sztuczka, która działa dla części „od”. Otwórz ekran „Zmień ustawienia ...”, Terminal i w sekcji „Drukarka, aby wysłać dane wyjściowe drukarki ANSI do:” wybierz „Ogólne / Tylko tekst”

Teraz w systemie zdalnym uruchom to w jednej linii:

tput mc5; cat whatever.txt; tput mc4

Putty poinformuje Cię, że plik został zapisany. To, co robi, to przełączenie terminala w tryb drukarki (tput mc5), wydrukowanie pliku na ekranie (cat), a następnie wyłączenie trybu drukarki (tput mc4). Jeśli nie umieścisz wszystkich poleceń w jednej linii, ekran będzie wyglądał na zamrożony, ponieważ Putty zapisuje wszystkie dane wyjściowe terminala do pliku w tle.

Jeśli korzystasz z bardziej ograniczonego systemu, który nie ma polecenia tput (np. Qnap), możesz spróbować printf "\ x1b [5i" zamiast tput mc5 i printf "\ x1b [4i" zamiast tput mc4 .

Polecenie w środku to po prostu wszystko, co drukuje na ekranie. Więc użyj tail -n 10000 blah.log, aby pobrać ostatnie 10 tys. Wierszy pliku dziennika, lub użyj kodera base64, aby zmapować plik binarny na coś, co możesz wydrukować (a następnie zdekodować w systemie lokalnym):

printf "\x1b[5i"; openssl enc -base64 -in something.zip; printf "\x1b[4i"
Jon B.
źródło
Pan jest geniuszem! Od jakiegoś czasu szukałem sposobu na przesyłanie plików przez aktywną sesję SSH i jest to pierwsza, którą mogę łatwo wykonać. Czy wiesz, czy tę technikę można zmodyfikować, aby działała przy użyciu terminala na kliencie opartym na systemie macOS lub Linux (tj. Terminalach innych niż PuTTY)?
Dominic P
3

Jeśli musisz przeprowadzić walidację klucza prywatnego; w wierszu polecenia (cmd), uruchom

Pierwszy;

set PATH=C:\PuttySetupLocation

Druga;

pscp -i C:/MyPrivateKeyFile.ppk C:/MySourceFile.jar [email protected]:/home/ubuntu

Ponadto, jeśli potrzebujesz dodatkowych opcji, spójrz na poniższy link. https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html

ÖMER TAŞCI
źródło
Po co set PATH=C:\PuttySetupLocation? Dlaczego nie zrobisz tego C:\PuttySetupLocation\pscpbezpośrednio? - Nawet jeśli chcesz zmodyfikować PATH, powinieneś dodać nową ścieżkę, a nie całkowicie ją resetować.
Martin Prikryl,
Uruchomienie set PATH = C: \ PuttySetupLocation nie resetuje ścieżki, tylko dodaje PSCP do ścieżki jako nowy wpis. Masz rację co do używania C: \ PuttySetupLocation \ pscp . Może to być również poprawne.
ÖMER TAŞCI
1
TO resetuje ścieżkę.
Martin Prikryl
jakie hasło? Nie powinno być związane z ustawieniami haseł.
ÖMER TAŞCI
Jakie hasło? Może przeczytałeś mój komentarz zaraz po tym, jak go opublikowałem z literówką „hasło” zamiast „ścieżki” . Naprawiłem to sekundę po opublikowaniu (na długo przed twoim komentarzem).
Martin Prikryl
3

Popatrz tutaj:

http://web.archive.org/web/20170106202838/https://it.cornell.edu/services/managed_servers/howto/file_transfer/fileputty.cfm#puttytrans

Zaleca korzystanie pscp.exez PuTTY, które można znaleźć tutaj: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Bezpośredni transfer, taki jak FTP, nie jest możliwy, ponieważ wszystkie polecenia podczas sesji są wysyłane do serwera.

Błotnik
źródło
Dzięki, loguję się za pomocą klucza prywatnego, którego link do abolve nie wydaje się szczegółowy?
błękitne niebo
1
@ user470184 Jeśli udało ci się przeżyć dwa lata bez wiedzy, jak to zrobić, instrukcje, jak to zrobić, znajdziesz na dole: > tej strony <
Hawkwing
1

Przesyłanie plików za pomocą Putty (pscp / plink.exe)

Domyślna instalacja kitu zapewnia wiele sposobów przesyłania plików. Najprawdopodobniej puttyznajduje się na domyślnej ścieżce, więc możesz bezpośrednio wywołać puttyz wiersza polecenia. Jeśli tak się nie stanie, może być konieczna zmiana zmiennych środowiskowych. Zobacz instrukcje tutaj: https://it.cornell.edu/managed-servers/transfer-files-using-putt

Kroki

  1. Otwórz wiersz polecenia, wpisując cmd

  2. Aby przenieść foldery z komputera z systemem Windows na inny komputer z systemem Windows (zwróć uwagę na -rflagę, która wskazuje, że pliki będą przesyłane rekurencyjnie, nie ma potrzeby ich archiwizowania): pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" [email protected]:/"C:/Program Files (x86)/"

  3. Aby przenieść pliki z komputera z systemem Windows na inny komputer z systemem Windows, użyj: pscp -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" [email protected]:/"C:/Program Files (x86)/"

  4. Czasami możesz tylko plinkzainstalować. plinkmoże być potencjalnie używany do przesyłania plików, ale najlepiej ogranicza się do prostych plików tekstowych. Może mieć nieznane zachowanie w plikach binarnych ( /superuser/1289455/create-text-file-on-remote-machine-using-plink-putty-with-contents-of-windows-lo ): plink -i C:/Users/username/.ssh/id_rsa.ppk user@host <localfile "cat >hostfile"

  5. Aby przesłać pliki z serwera Linux na komputer z systemem Windows na komputer z systemem Linux, użyj pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" [email protected]:/home/username

Aby to wszystko działało, musisz mieć odpowiedni klucz publiczny / prywatny. Aby wygenerować to dla szpachli, patrz: https://superuser.com/a/1285789/658319

alpha_989
źródło
0

W ten sposób w systemie Windows pscp umożliwia bezpośrednie przesyłanie (bez żądania np. Akceptacji klucza):

pscp.exe -scp -pw 'my_pw' -v -i my.ppk -l root -batch -sshlog logfile19.txt -hostkey ba:2e:4d:12:68:82:19:a1:d2:22:bc:12:c2:1a:44:a7 hallo4.txt [email protected]:/srv/www/htdocs/xml_parser/hallo4.txt

Kai Behncke
źródło