Jak przesyłać pliki przez ssh, gdy już ssh'd na serwer

13

Przesyłam pliki za pomocą tego polecenia

scp <localfile> user@host:<destination>

Powyższe polecenie działa tylko wtedy, gdy nie jestem ssh'd na serwerze.

Jak przesłać lokalne pliki na komputer hosta, gdy już jestem ssh'd?

Używam ssh user@hostname

Wszechobecny
źródło
2
Jaki system operacyjny Otwórz kolejny terminal i użyj polecenia scp
Impulss
1
to jest centOS. To właśnie robiłem do tej pory. Miałem tylko nadzieję na coś wygodniejszego.
Wszechobecny

Odpowiedzi:

5

Dobre pytanie. scpznowu, ale odwrotnie. Zrobiłem to i oto:

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

edytowane w celu dodania: jak wskazano w komentarzach, wymaga to, aby komputer zdalny mógł uzyskać dostęp do komputera lokalnego. I sshd lub (openssh-server) musi być zainstalowany i uruchomiony na komputerze lokalnym.

Chris K.
źródło
3
Załóżmy, że lokalny komputer jest dostępny ze zdalnego i nie zawsze jest to prawdą.
laurent
Jeśli jednak to prawda, będzie działało ładnie.
daviewales
3

Pomoże ci to wiedzieć, co uruchamiasz na komputerze hosta. Jeśli używasz Linuksa,

scp user@host:/path/myfile .

powinno działać.

Josh
źródło
użytkownik @ host jest komputerem zdalnym z tego, co zrozumiałem w pytaniu, więc to polecenie nie kopiuje plików z komputera lokalnego na komputer zdalny, ale z komputera zdalnego na lokalny, jeśli nie jest SSHed na hoście i kopiuje z komputera zdalnego do siebie, jeśli SSHed.
laurent
Myślę, że pytanie jest niejasne. user@hostWydaje mi się, że odnosi się do dowolnego komputera, którego obecnie nie kontrolujesz. Tak więc, gdy OP nie jest zalogowany na komputerze zdalnym, wtedy user@hostjest to komputer zdalny. Gdy OP jest zalogowany na komputerze zdalnym, to user@hostjest to komputer lokalny. Jeśli moje założenia są poprawne, to ta odpowiedź ma sens.
daviewales
Dokładnie tak samo interpretowałem pytanie, daviewales. Ponadto masz rację, użytkownik @ host reprezentowałby, niezależnie od tego, na jakiej stacji roboczej obecnie NIE pracujesz. Zastanawiałem się, czy wyjaśnić to w mojej odpowiedzi, ale pomyślałem, że będzie to implikowane.
Josh
W każdym razie, nawet jeśli użytkownik @ host reprezentuje komputer lokalny, gdy użytkownik jest zalogowany na komputerze zdalnym (mało prawdopodobne, ponieważ OP powiedział, że chce przenieść pliki lokalne na komputer hosta), zadziała to tylko wtedy, gdy komputer lokalny jest dostępny ze zdalnego włączony (zazwyczaj jeśli są w tej samej sieci LAN), a nie w scenariuszu, w którym zdalne urządzenie jest w Internecie, a urządzenie lokalne nie ma stałego adresu IP.
laurent
0

Jeśli masz drogę powrotną do komputera lokalnego (komputer lokalny jest dostępny ze zdalnego - zwykle, gdy oba komputery są w tej samej sieci LAN), użycie scp ze zdalnego komputera powinno działać ( scp local:/path-to-file .).

Jeśli nie można uzyskać dostępu do komputera lokalnego ze zdalnego (zwykle prawda, jeśli komputer zdalny to VPS w Internecie, a komputer lokalny ma dynamiczny adres IP), najlepszym sposobem jest otwarcie nowego terminala na komputerze lokalnym i skopiowanie pliku.

Innym sposobem, bardziej skomplikowanym i na pewno nie koniecznym tylko do kopiowania plików, byłoby utworzenie sieci VPN między komputerami (lub sieciami), aby oba komputery były dostępne z drugiego i można było używać scp z jednego komputera lub z drugiego.

Laurent
źródło
-1

podczas logowania do systemu zdalnego (łatwiej po prostu cd do lokalizacji pliku) sudo scp lokalizacja_pliku / nazwa_pliku użytkownik @ host: lokalizacja_pliku

podczas wylogowania ze zdalnego systemu sudo scp autor_użytkownika @ nazwa_hosta: lokalizacja_pliku / nazwa_pliku nowa_lokacja_na_lokalnej_machine

UWAGA: pamiętaj, że po wylogowaniu ze zdalnych systemów, jeśli jest to nowy terminal, pierwsze hasło będzie hasłem sudo, drugie hasło będzie hasłem autoryzowanego użytkownika. jeśli sudo-edowałeś wcześniej w tym konkretnym terminalu, to potrzebujesz tylko hasła autoryzowanego użytkownika. uważaj na to, to sprawia, że ​​jest to trudne.

obalolu
źródło