Jak SCP z serwera Linux do klienta Windows

23

Używam PuTTY na komputerze z systemem Linux i próbuję skopiować plik gdzieś (gdziekolwiek) na moją maszynę lokalną. I dowiedzieć SCP jest najlepszym kandydatem do pracy, ale tak naprawdę nie obchodzi, tak długo jak prace rozwiązanie!

I cddo katalogu zawierającego plik I Want ( app.war) i wpisz następujące polecenie:

scp app.war ./

Próbowałem obu bezskutecznie:

scp app.war ./C:/Users/myUser/
scp app.war ./Users/myUser/

Pomyślałem, że być może SCP jest narzędziem typu klient / serwer i wymaga klienta na moim komputerze z systemem Windows, którego nie ma.

Czy po prostu używam złej składni? A może jestem poza bazą? Jeśli tak, jakie mam opcje? Z góry dziękuję!

pnongrata
źródło
Prawdziwa odpowiedź na to pytanie znajduje się tutaj: stackoverflow.com/a/23412501/1579667 . Składnia jest następującascp some_file user@host:/c/temp
Benj
Zobacz także klienta i serwer Bitvise SSH. Jest to jedno z najstarszych programów SSH dla systemu Windows. Klient można pobrać za darmo i bezpłatnie.
jww

Odpowiedzi:

25

w celu skopiowania plików z powrotem do systemu Windows potrzebujesz demona / usługi SSH, aby działał w systemie Windows, zamiast tego jest o wiele łatwiejsze w użyciu to narzędzie, ma możliwość importowania sesji z Putty, bardzo prostego klienta, z którego będziesz korzystać kocham to!

WinSCP :: Darmowy klient SFTP i FTP dla Windows

Alexus
źródło
Po prostu niesamowite narzędzie :). Bardzo mi się podobało \ m /
Chaitanya
Naprawdę nie odpowiada na pierwotne pytanie, które żyło w wierszu poleceń. Zobacz mój komentarz poniżej oryginalnego pytania.
Benj
@Benj OP poprosił o rozwiązanie, WinSCPjest dobrym rozwiązaniem dla tego zadania.
Alexus
12

Masz rację. SSHD to usługi serwera SSH działające na hoście. Akceptuje połączenia od klientów SSH (takich jak PuTTy), klientów SCP i klientów SFTP.

Możesz pobrać pscpz tej samej strony, na której hostowany jest PuTTY .

Z komputera z systemem Windows można wykonać polecenie podobne do

pscp.exe [email protected]:/path/to/app.war c:\tmp

George M.
źródło
2

Aby przesłać plik do komputera z systemem Windows, potrzebujesz serwera SSH / SCP w systemie Windows.

Domyślnie nie ma obsługi SSH / SCP w systemie Windows. Możesz zainstalować kompilację Microsoft OpenSSH dla Windows ( wersje i pliki do pobrania ). Jest dostępna jako opcjonalna funkcja w systemie Windows 10 w wersji 1803 i nowszych. Można go również zainstalować ręcznie w starszych wersjach systemu Windows.

Przygotowałem przewodnik dotyczący konfigurowania serwera SSH / SFTP w systemie Windows przy użyciu tej kompilacji OpenSSH firmy Microsoft .

Zobacz także Czy IIS SFTP jest natywnie obsługiwany przez system Windows?


Chociaż podczas SSH do serwera Linux z komputera z systemem Windows, faktycznie możesz pobrać plik z serwera Linux na serwer Windows, zamiast próbować przesłać plik z serwera Linux na serwer Windows.

Jeśli masz dostęp SSH z systemu Windows do Linux, masz również dostęp SCP (lub jeszcze lepiej dostęp SFTP).

Użyj dowolnego dostępnego klienta SCP / SFTP.

Możesz użyć klienta WinSCP SFTP / SCP , który ma zarówno GUI, jak i interfejs wiersza poleceń .

Inną alternatywą jest zestaw narzędzi PuTTY, który obejmuje pscpnarzędzie wiersza poleceń o składni podobnej do scppolecenia OpenSSH . Również najnowsze wersje systemu Windows 10 są wyposażone we scpwbudowane oprogramowanie OpenSSH i można je również zainstalować na starszych wersjach.

(Jestem autorem WinSCP)

Martin Prikryl
źródło
czy istnieje wersja pscp dla OSX / Linux?
codingknob
@codingknob Pewnie, istnieje pakiet „putty” dla wielu dystrybucji. Chociaż pscpfunkcjonalnie jest identyczny z OpenSSH scp, który jest już dostępny we wszystkich / większości dystrybucji.
Martin Prikryl
1

Windows 10 ma teraz wbudowany OpenSSH. Https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse

Uzyskaj wiersz polecenia administratora

Open PowerShell as an Administrator.

Sprawdź dostępne wersje

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Zainstaluj klienta

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Zainstaluj serwer

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Uruchom serwer i włącz przy rozruchu

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

Znajdź swój adres IP systemu Windows

ipconfig

Na swoim zdalnym komputerze (Linux) znajdź swój adres IP.

ifconfig

Utwórz publiczny klucz SSH

ssh-keygen.exe

Skopiuj klucz publiczny z lokalnego (Windows) na zdalny (Linux) komputer, abyś nie musiał cały czas wpisywać hasła.

Pamiętaj, że ssh-copy-id nie jest obecnie dostępny w systemie Windows.

cat C:\Users\YOU/.ssh/id_rsa.pub | ssh USER@REMOTE_IP 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

Zrób to samo na komputerze z systemem Linux (uwaga, ssh-copy-id nie działa)

ssh-keygen # if needed
cat ~/.ssh/id_rsa.pub | ssh USER@WINDOWS_IP 'mkdir -p ~/.ssh && type con >> C:/Users/YOU/.ssh/authorized_keys'
  • Powyższa metoda nie działała dla mnie, więc skończyłem ręcznie SCP przekręcając klucz publiczny i wklejając go do pliku C: /Users/YOU/.ssh/authorized_keys.

  • To wciąż nie działało, więc musiałem zmodyfikować plik sshd_config.

    • Otwórz Notatnik jako Administrator

    • Otwórz% programdata% \ ssh \ sshd_config

    • Dodaj następujące wiersze:

        Match User YOU
             AuthorizedKeysFile C:/Users/YOU/.ssh/authorized_keys
  • Restart

Utwórz hasło w systemie Windows, jeśli jeszcze go nie masz

System Settings...Sign-in options

- Uwaga: nadal możesz wyłączyć ekran logowania systemu Windows poprzez: a) Ustawienie opcji „Wymagaj logowania” na nigdy i b) Użycie polecenia „netplwiz” i odznaczenie pola wyboru „Użytkownicy muszą wprowadzić hasło ...”.

Teraz powinieneś mieć możliwość SSH lub SCP z komputera z systemem Linux

scp FILE WINDOWS_IP:C:/Users/YOU/Desktop
Ismael
źródło
1

Możesz to zrobić za pomocą podsystemu Linux Ubuntu dla systemu Windows (musisz włączyć tę funkcję jako funkcja systemu Windows). Następnie możesz użyć klienta terminalu Linux działającego w systemie Windows, pobierając go ze sklepu Microsoft Store (np. Ubuntu 16.04 LTS). Następnie, jeśli masz skonfigurowane zabezpieczenia zdalne do komputera z systemem Linux, możesz scpz lokalnego terminala systemu Windows Ubuntu (po zalogowaniu się jako nazwa użytkownika ustawiona dla instancji Linuksa) coś takiego:

scp -i ~/.ssh/my_rsa [email protected]:~/myfile ~/ ... wprowadź hasło RSA

Plik zdalny zostanie skopiowany do lokalnego systemu plików Ubuntu używanego przez system Windows, np

C:\Users\my.username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\my_linux_username

Chris Halcrow
źródło
1
W najnowszych wersjach systemu Windows 10 (Win32-OpenSSH) scp(.exe)jest wbudowany. Nie musisz niczego instalować.
Martin Prikryl
-1

Krok 1: Pobierz pscp
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
(W zależności od komputera pobierz odpowiednią wersję)

Krok 2: Zapoznaj się z poleceniami pscp
Aby to zrobić, otwórz wiersz poleceń na komputerze z systemem Windows, przejdź do katalogu, w którym pobrałeś pscp.exe i wpisz „pscp”

Krok 3: przenieś plik z komputera z systemem Linux na komputer z systemem Windows
otwórz wiersz polecenia i uruchom poniższe polecenie, podając swoje dane:

pscp [email protected]:/path/of/your/File/nameofyourfile.txt ./

a to polecenie przeniesie plik z komputera z systemem Linux do bieżącego katalogu komputera z systemem Windows

Krok 4: przenieś plik z komputera z systemem Windows na komputer z systemem Linux,
otwórz wiersz polecenia i uruchom poniższe polecenie, podając swoje dane:

pscp nameofyourfile.txt [email protected]:/path/where/youwantyourfile

Mam nadzieję, że to jasne i działa na was wszystkich!

SH ”
źródło
2
Łącza tylko odpowiedzi są raczej nieprzydatne, ponieważ mogą przestać działać w przyszłości - spróbuj rozszerzyć swoją odpowiedź, wyjaśniając kroki w filmie.
djsmiley2k w ciemności