Rozejrzałem się po innych pytaniach tutaj i różnych samouczkach dotyczących „użycia SCP” w Internecie, ale nie mogę ustalić, co jest nie tak.
Używam Linux Mint i staram się dowiedzieć, jak działa scp .
Mam plik file.ext (na moim komputerze) w katalogu / home / name / dir /
Łączę się ze zdalnym komputerem za pomocą ssh , takiego jak:
ssh -p 2222 username@domain
pyta mnie o hasło, a powłoka wyświetla:
username@domain ~ $
teraz, jeśli wydam polecenie (zanim uruchomiłem ssh, byłem w katalogu lokalnym / home / name / dir ):
scp -r -P 2222 file.ext username@domain
wyjście to:
cp: cannot stat ‘file.ext’: No such file or directory
Ten sam wynik, jeśli zamiast file.ext napiszę pełną ścieżkę
scp -r -P 2222 /home/name/dir/file.ext username@domain
Ponadto administrator serwera powiedział mi, że prześlę plik do mojego zdalnego katalogu domowego (zamiast root), na przykład:
scp -r -P 2222 file.ext username@domain:~/
ale kiedy to robię i wciskam „Enter”, nic się nie dzieje, tak jakby powłoka czekała na dalsze dane wejściowe.
Podsumowanie moich problemów:
- cp: brak takiego pliku lub katalogu
- powłoka „utknęła” na ~ /
Jakieś sugestie?
localuser@machineA: ssh -p 2222 username@domain
(aby wskazać, że uruchamiasz komendę ssh jako localuser na maszynie A)scp
The remote strona zawsze musi zawierać dwukropka (npremotehost:/tmp
), w przeciwnym wypadku będzie to po prostu zrobić zwykłą kopię (scp /tmp/foo.txt example.com
kopiuje/tmp/foo.txt
do pliku lokalnegoexample.com
)-r
flagę, ponieważ nie jest to konieczne do kopiowania pojedynczych plików (służy do rekurencyjnego kopiowania katalogów)Odpowiedzi:
Musisz uruchomić
scp
polecenie z komputera lokalnego, a nie zdalnego. W ogóle nie potrzebujeszssh
:Nie potrzebujesz również
-r
:Jeśli jesteś już zalogowany na komputerze zdalnym i chcesz skopiować z komputera lokalnego, musisz upewnić się, że komputer lokalny jest dostępny przez Internet i
ssh
skonfigurował się. Nie sądzę, że o to ci chodzi, ale jeśli tak, po prostu uruchom to za pomocą pilota:źródło
Zapewniam dwie metody ładowania / wysyłania pliku między komputerem zdalnym a lokalnym (używam Mac Air):
W tym przypadku chcę w górę / w dół „11.jpeg” między lokalnym a zdalnym:
1.
Aby osiągnąć ten sam cel podczas logowania do SSH , musisz najpierw ustawić „Preferencje systemowe> udostępnianie> logowanie zdalne> wszyscy użytkownicy (nie jestem pewien, czy musisz ustawić dla„ wszystkich użytkowników ”, ale to działa w tej sytuacji ) ”Komputer Mac powie Ci„ Aby zalogować się zdalnie na tym komputerze, wpisz: ssh nazwa użytkownika @ xxxxxx, a następnie wpisz poniższe polecenie:
nazwa użytkownika scp @ domena: /home/xxx/xxx/11.jpeg nazwa użytkownika @ xxxxxx: / Users / nazwa użytkownika / Desktop /
To polecenie powyżej służy do pobierania pliku ze zdalnego na lokalny, gdy logujesz się do ssh, po prostu zmień dwie ścieżki, gdy chcesz załadować plik.
źródło
Jeśli uruchamiasz tę komendę scp na zdalnym komputerze, szuka
file.ext
ona pliku „lokalnego”, tj. Na zdalnym komputerze.Aby skopiować plik ze zdalnego komputera na lokalny, użyj
scp -P 2222 username@domain:dir/file.ext localdir
(zakładając, żefile.ext
znajduje się~/dir
on na komputerze zdalnym, jak w twoim przykładzie). Jeśli działaszscp
na komputerze zdalnym, odwróć „lokalny” i „zdalny”.źródło
Użyj
scp
poleceniaJeśli chcesz przenieść folder, po prostu
zip
najpierw, możemyunzip
go później.Na komputerze uruchom to:
Tutaj
root
jest twoje konto i10.145.198.100
adres IP zdalnego serwera. Skopiujemythe_file
do~/
folderu na pilocie.Rozpakuj plik:
źródło
root
nawet dostęp SSH na zdalnym komputerze? To dość niepewne. Lepiej użyć zwykłego zastosowania, a następniesudo
zrobić wszystko, co root ma do zrobienia na tym komputerze.Mały wkład, może pomóc początkującym, takim jak ja: ścieżka do zdalnego katalogu powinna być zapisana w następujący sposób:
username@domain:~/remote_directory
Chcę tu podkreślić, że zawsze powinniśmy to dodawać
:~/
źródło
Rozwiązanie do kopiowania plików z
Linux client
doLinux Server
Sprawdź, czy
sshd
działa na twoim serwerze, używając:ps aux | grep sshd
Jeśli nie, zainstaluj
OpenSSH
przy użyciusudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/Uruchom ponownie serwer i sprawdź, czy
sshd
działaps aux | grep sshd
Jeśli potrzebujesz, możesz skonfigurować
/etc/ssh/sshd_config
plik, ale nie jest to konieczne w przypadku prostych konfiguracjisprawdź, czy porty są otwarte za pomocą
netcat
nc -v -z 127.0.0.1 22
Aby skopiować pliki z
Linux
klienta doLinux
klienta, użyj scp w następujący sposóbscp ~/filename.md [email protected]:~/folder/filename.md
Aby sprawdzić, czy plik został skopiowany, użyj
ssh [email protected]
i podaj hasło.Rozwiązanie do kopiowania plików z
Linux client
`WindowsIstnieje wiele klientów do uruchamiania serwerów SSH w systemie Windows, takich jak OpenSSH od MS
MobaSSH
Serwer Bitvise SSH
Zainstaluj jeden z powyższych serwerów i upewnij się, że port 22 jest otwarty przy użyciu
netsh advfirewall firewall dodaj nazwę reguły = "SSH Port 22" dir = w akcji = zezwól na protokół = UDP localport = 22
netsh advfirewall firewall dodaj nazwę reguły = "SSH Port 22" katalog = akcja out = zezwól na protokół = port lokalny UDP = 22
netsh advfirewall firewall dodaj nazwę reguły = "SSH Port 22" katalog = w akcji = zezwól na protokół = TCP port lokalny = 22
netsh advfirewall firewall dodaj nazwę reguły = "SSH Port 22" katalog = akcja out = zezwól na protokół = TCP port lokalny = 22
Polecenie netsh advfirewall ustawia stan wszystkich profili
Porównania tych serwerów:
Serwer Bitvise SSH
Zapewnia prawie zbliżone do natywnego
cmd
monitu,powershell
monitu i autouzupełnianiaZapewnia dodatkowe możliwości dostosowywania, jeśli potrzebujesz zaawansowanego użycia
Dostosowanie użytkownika do prostych potrzeb to 0. Zacząłem od niego w ciągu 2 minut, po tym, jak spędziłem dużo czasu próbując dostać się
MobaSSH
iOpenSSH
pracować.Aby skopiować pliki przy użyciu SCP:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
Bezpłatnie do użytku osobistego, 99 USD do użytku profesjonalnego. Ze względu na tak wiele funkcji i doskonałą integrację cena jest warta swojej ceny
MobaSSH:
zapewnia powłokę Linux na oknach, gdzie proste polecenia Linuksa takie jak
ls
,cp
,find
etc pracy, podobny doMINGW64
możesz uzyskać dostęp
cmd
ipowershell
bezpośrednio, wpisująccmd
lubpowershell
Obsługa Unicode jest słaba. Kodowanie jest nieprawidłowe. Na przykład próba uruchomienia
Python
interpretera spowoduje awarię. Konieczna będzie ręczna zmiana kodowania za pomocą ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
a następnie uruchomienie monitu PythonWspaniałą rzeczą jest to, że MobaSSH ma bardzo prosty interfejs użytkownika, a
scp
issh
i dobrze zintegrowane. Będzie więc działać w prostych przypadkach użyciaAby skopiować pliki z
Linux
klienta naWindows
uruchomiony serwerMobaSSH
: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Jest tak, ponieważMobaSSH
jest oparty nacygwin
dyskach i są mapowane w ten sam sposób -cygwin
dyski są mapowane.Używaj maszyn wirtualnych Microsoft z OpenSSHv6.7 zainstalowanym z https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 jest już zainstalowany.
Jest bardzo wadliwy i trzeba go mocno dostosować.
Uzupełnianie poleceń nie działa
Zostawi puste miejsca podczas przesuwania kursora na terminalu
Python nie działa
Późniejsze wersje OpenSSH mogły ulec poprawie. Dalsze MS wydaje się udostępniać OpenSSH za pośrednictwem
Optional Features
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/źródło
Jeśli zdarzyło Ci się być na OSX ...
Kiedy próbowałem uruchomić go z nazwą użytkownika @ local: / file_directory ...
Wystąpił następujący błąd:
Rozwiązanie
Na komputerze Mac musiałem wykonać następujące czynności, aby skonfigurować lokalnie
ssh
:To podało nazwę użytkownika @ adres ip.
źródło
Miałem ten sam problem dzisiaj na MAC.
Wpisz następujące polecenie:
źródło