Nie mogę sftp bezpośrednio do konkretnego hosta. Aby przenieść plik z mojego komputera domowego na host, muszę sftp pliku na host pośredni; ssh do hosta pośredniego; i sftp plik do ostatecznego miejsca docelowego. Czy można uniknąć takiego szaleństwa?
Z komputera lokalnego możesz utworzyć tunel SSH przez host pośredni do hosta końcowego:
ssh user@intermediate -L 2000:final:22-N
Spowoduje to otwarcie portu 2000 na lokalnym hoście, który połączy się bezpośrednio z serwerem końcowym na porcie 22, tunelując przez host pośredni. Teraz w kolejnym pytaniu połącz się z sftp na porcie 2000, aby przejść przez tunel do serwera końcowego, zauważając, że podany tutaj użytkownik jest dla hosta końcowego:
Możesz użyć opcji ProxyCommand SFTP, aby transparentnie tunelować połączenie SFTP przez połączenie SSH (nieco podobne do odpowiedzi WhiteFang34, ale zamiast stdin i stdout połączenia SSH, a nie przekazywanego lokalnego portu TCP):
(Zakładając, że host pośredni ma zainstalowany netcat jako / usr / bin / nc - jeśli nie, być może będziesz musiał znaleźć / zainstalować jakiś równoważny sposób bramkowania stdin i stdout do sesji TCP.)
Naprawdę fajne w tej opcji jest to, że możesz dodać ją do pliku ~ / .ssh / config, co czyni ją przezroczystą:
Dzięki temu wpisowi możesz używać sftp, scp i ssh do finalhost, a on automatycznie wywoła tunel. Jedyną nieprzejrzystą częścią jest to, że poprosi o dwa hasła (host pośredni, a następnie host końcowy), ale jeśli chcesz, możesz to również wyeliminować za pomocą kluczy SSH ...
To brzmi jak coś w połączeniu - może skrypt logowania na jednym z hostów, może nc - pisze dodatkowy tekst nad połączeniem, co dezorientuje sftp (zobacz to FAQ na snailbook.com ). 1131376238 to dziesiętne kodowanie znaków ascii „Conn”, więc prawdopodobnie jest to komunikat „Łączenie z ...” „Połączono z ...” lub może „Połączenie nieudane”. Spróbuj użyć ssh zamiast sftp, sprawdź, czy wiadomość jest drukowana w widoczny sposób, a może wiesz, skąd pochodzi.
ssh działało dobrze. Powinienem również wspomnieć, że często mam do czynienia z tym pytaniem: nie można ustalić autentyczności hosta „xxxxx (<brak hostip dla polecenia proxy>)”. Odcisk palca klucza RSA to 37: 40: d4: c7: itd. Czy na pewno chcesz kontynuować połączenie (tak / nie)? tak
Możesz przesyłać dane do procesu ssh uruchomionego na twoim komputerze, a następnie uruchomić polecenie na maszynie pośredniej, która odczytuje stdin i przesyła je odpowiednio do sftp.
Można to zrobić w programie oneliner na lokalnej maszynie, choć cytowanie argumentów w ssh wymaga ostrożności. Jestem teraz przy telefonie, więc niestety nie mogę wpisać szczegółów. Być może ktoś inny może wypełnić tę odpowiedź jako ćwiczenie!
Zakładam, że ostateczny host jest zaporą ogniową i mogę tylko zgadywać, jakie metody można by obejść.
Na przykład - ujawnij ssh z komputera lokalnego, następnie ssh na pierwszym hoście, następnie ssh na drugim hoście i sftp z ostatniego hosta na twoim komputerze.
0
Powiedzmy, że A i B są pierwszym i drugim hostem. Plik do skopiowania to foo
Zamiast sftp możesz użyć następujących
kot foo | ssh A „cat -> foo”
Teraz możesz połączyć łańcuchowo 2 z nich razem
kot foo | ssh A "cat - | ssh B \" cat -> foo \ ""
Podoba mi się, więc spróbowałem. Wziął hasło dla A, a następnie wyświetlił komunikat: Weryfikacja klucza hosta nie powiodła się.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.