Dator A (antas att ip är 44.44.44.44) kan ftp värden 130.89.148.12.

ftp 130.89.148.12 Connected to 130.89.148.12. 220 ftp.debian.org FTP server Name (130.89.148.12:debian8): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. 

Dator B (min lokala dator) kan inte ftp-värden 130.89.148.12. Låt oss bygga en ssh-tunnel med ssh-kommandot på detta sätt:

ssh -L -f -N localhost:2121:130.89.148.12:21 [email protected] 

ssh-tunneln mellan min lokala dator och dator A (44.44.44.44) anslöts efter lösenord för att logga in på 44.44.44.44.
Sedan för att mata in kommandot på min lokala PC-konsol:

ftp localhost:2121 ftp: localhost:2121: Name or service not known 

Vad är det med min ssh-tunnel?

Tänk att chexum, rätt ftp-kommando är ftp localhost 2121 Men nytt problem. ange bildbeskrivning här

Kommentarer

  • Kontrollera din ftp(1) manpage om hur du anger en port. Det ' är vanligtvis åtskilt med ett mellanslag (inte ett kolon) eller som ett alternativ -p. Du ' Jag måste också se till att använda passiv ftp, så kolla manualen först.
  • Placera inte text som bilder.

Svar

Din inställning tar inte hänsyn till det i motsats till andra vanliga protokoll använder FTP både port 20 och port 21 över TCP som standard .

Termen passiv hänvisar till att protokollet litet beter sig än de ursprungliga implementeringarna.

Här är en länk:

http://www.slacksite.com/other/ftp.html

Port 20 / TCP används för data och port 21 / TCP för kommandon .

I Unix kan också privilegierade portar < 1024 endast bindas av root.

Så gör du antingen:

sudo ssh -f -N -L 20:130.89.148.12:20 -L 21:130.89.148.12:21 [email protected] 

På det här sättet ger du ingen extra port och använder den bara med

ftp -p localhost 

eller om du inte har root:

ssh -f -N -L 2120:130.89.148.12:20 -L 2121:130.89.148.12:21 [email protected] 

och sedan använda:

ftp -p -P 2121 localhost 

Från man ftp http://linux.die.net/man/1/ftp

-p passivt läge
-P-port

eller om det finns en version av ftp som inte stöder -P (Debian 9 / Ubuntu 16.04):

ftp -p localhost 2121 

Jag kommer också att lämna en länk till ”SSH-tunnlar lokal och fjärrport vidarebefordran förklaras”

http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

Slutligen skulle jag rekommendera att du inte använder root i fjärrsystemet för ssh-anslutningar. root är ett mycket kraftfullt konto och bör endast reserveras för systemadministration.

Dessutom är ssh fjärrinloggning som root inaktiverad som standard i många moderna Linux.

Varför är rootinloggning via SSH så dålig att alla rekommenderar att inaktivera det?

Kommentarer

  • Vad? Dataanslutningen använder inte port 20; den använder en slumpmässig port > 1024. Även ftp verkar inte ha ett -P -alternativ, åtminstone inte på Ubuntu 16.04. Således kan du inte vidarebefordra ftp med ssh eftersom du inte ' inte vet vilken slumpmässig port som kommer att väljas när dataanslutningen upprättas (och du får en annan för varje fil som överförs eller varje när du ls).
  • Nej, servern lyssnar också på en kortare port. Det måste eftersom det kan betjäna flera klienter och om det använde port 20 för var och en av dem, skulle det inte ha någon aning vilken som motsvarade vilken kontrollsession.
  • Jag skrev ut FTP RFC på min punkt matrisskrivare och studerade den när jag var 16. Jag tänkte att du kan utfärda ett PASV-kommando till en server, sedan ett PORT-kommando till den andra servern med IP-adress och portnummer från PASV-svaret från den andra servern och få dem att skicka filen direkt från en server till en annan istället för att behöva ladda ner och ladda upp den själv över mitt 28,8 kbps modem. Senare kom ett program som heter FXP som kunde göra det, och jag skrev också min egen FTP-serverprogramvara för WinNT som sprängde byxorna av allt annat. Gå och titta på ett PASV-svar själv.
  • Du är förvirrad. Den lyssnar på port 21, inte 20. Du ansluter till servern på port 21 och utfärdar sedan antingen ett PORT-kommando och berättar servern vilken IP och portnummer den ska ansluta till, eller ett PASV-kommando, i vilket fall det börjar lyssna på dataanslutningen på en kortare port och anger vilken port som finns i svaret. Från ett offertpas-kommando till ftp.gnu.org: " 227 Gå in i passivt läge (208,118,235,20,96,222) ". Observera att servern lyssnar på port 96,222 eller 24,798.
  • Varför inte redigera den så att den är korrekt?

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *