Odwróć SCP przez połączenie SSH

17

Dość często potrzebuję pliku z jakiegoś serwera, gdy jestem na laptopie. Ale jeśli nie wiem, gdzie jest ten plik, muszę przejść do sshserwera, rozejrzeć się exit, a potem scp server:file .. Jeśli pracuję z komputerem i serwerem, z których oba mają statyczne adresy IP, mogę po prostu przeskanować plik w odwrotnej kolejności ( scp desktop:~ file), ale nie mogę tego zrobić na moim laptopie. Czy jest jakiś dobry sposób na SCP plik do tyłu przez połączenie SSH? Czy komputer, z którym łączę się za pomocą SSH, wysyła plik do klienta?

pavpanchekha
źródło
Dlaczego nie skorzystać z mDNS?
Ignacio Vazquez-Abrams,
1
Uważam, że na to pytanie już poprawnie odpowiedziano tutaj: unix.stackexchange.com/a/2869
shellster

Odpowiedzi:

20

Byłoby to o wiele łatwiejsze dzięki SFTP, które jest rozszerzeniem SSH, które obsługuje bardziej złożone operacje na plikach niż SCP. Praktycznie wszystkie współczesne dystrybucje Uniksa i Linuksa obsługują to. Aby go użyć, wystarczy uruchomić to polecenie, aby połączyć się z serwerem:

sftp server

Następnie możesz użyć poleceń lsi cd, aby przeglądać i znajdować szukany plik. Po znalezieniu użyj getpolecenia, aby go pobrać. Na przykład, aby pobrać file.txtw bieżącym katalogu roboczym na serwerze do bieżącego katalogu roboczego na komputerze lokalnym, wystarczy uruchomić:

get file.txt

Aby pobrać /home/pavpanchekha/textfiles/file.txtz serwera ~/textfiles/na komputer lokalny, uruchom:

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

I odwrotnie, możesz również przesyłać pliki w ten sposób. Aby przesłać file.txtz lokalnego bieżącego katalogu roboczego do bieżącego katalogu roboczego serwera, wpisz:

put file.txt

Możesz również użyć pełnych ścieżek dla każdego, tak jak możesz get:

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

Aby uzyskać pełną listę dostępnych poleceń SFTP, wystarczy uruchomić helpu sftp>szybka.

Łatki
źródło
1
To całkiem fajne, dzięki. Czy jest jakiś sposób, aby uruchomić jeden w odwrotnej kolejności, jeśli mam już połączenie SSH? W przeciwnym razie muszę gdzieś ssh'ować, zdając sobie sprawę, że chcę przesłać plik, wyjść z połączenia SSH, nawiązać połączenie SFTP, wyjść z tego i wrócić do SSH.
pavpanchekha
2
@pav: SSH_CLIENTZmienna środowiskowa zawiera między innymi adres IP hosta łączącego się. Można go użyć do utworzenia aliasu powłoki w celu łatwego SFTP z powrotem do hosta źródłowego. Po prostu dodaj tę linię do ~/.bashrcserwera: alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" Następnie odłącz i ponownie połącz z SSH, aby zmiana zaczęła obowiązywać, lub uruchom ją tak, jakby była poleceniem, aby od razu zaczęła obowiązywać. Od tego sftpbackmomentu możesz po prostu uruchomić SFTP z powrotem do klienta, z którym się łączysz, bez względu na to, z którego on jest.
Łaty
To jest najlepsze !!! Dziękujemy za uratowanie mnie przed NANO (edycja pliku online), dzięki czemu proces jest tak prosty.
Mohsin,
0

Menedżer plików konsoli Midnight Commander (mc) ma system VFS, który umożliwia zarządzanie połączeniami / plikami SFTP ze zdalnymi serwerami. Działa również w Cygwin w systemie Windows. Domyślny interfejs pokazuje dwa niezależne panele; moglibyśmy otworzyć zdalny katalog SFTP w jednym z nich i łatwo przenieść pliki do / z drugiego panelu. Zawiera edytor / przeglądarkę plików (mcedit) z podświetlaniem składni.

Fjor
źródło