Por que o FTP não funciona através do meu túnel ssh?

5

O computador A (assumido que ip é 44.44.44.44) pode fazer o ftp do host 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.

O computador B (meu pc local) não pode fazer o ftp do host 130.89.148.12. Vamos construir um túnel ssh com o comando ssh desta forma:

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

O túnel ssh entre o meu PC local e o Computador A (44.44.44.44) foi conectado após a senha para entrar em 44.44.44.44.
Em seguida, para inserir o comando no meu console do PC local:

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

Qual é o problema com o meu túnel ssh?

Pense no chexum, o comando ftp direito é ftp localhost 2121 Mas novo problema.

    
por it_is_a_literature 25.12.2015 / 13:45

1 resposta

9

Sua abordagem não está levando em conta que, ao contrário de outros protocolos comuns, o FTP usa ambos porta 20 e porta 21 sobre TCP por padrão .

O termo passivo refere que o protocolo é ligeiramente mais bem comportado que as implementações iniciais.

Aqui está um link:

link

A porta 20 / TCP é usada para dados e a porta 21 / TCP para comandos.

No Unix, também portas privilegiadas < 1024, só pode ser vinculado por root.

Então você faz:

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

Dessa forma, você não fornece nenhuma porta extra e só a usa com

ftp -p localhost

ou se você não tiver raiz:

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

e, em seguida, use:

ftp -p -P 2121 localhost 

Do ftp link

-p modo passivo
-P porta

ou se com uma versão de ftp que não suporta -P (Debian 9 / Ubuntu 16.04):

ftp -p localhost 2121

Também deixarei um link para "Encaminhamentos de porta locais e remotos de encapsulamentos SSH explicados"

link

Por fim, aconselho não usar root no sistema remoto para conexões ssh. root é uma conta muito poderosa e só deve ser reservada para administração do sistema.

Além disso, em muitos logins modernos ssh, o login remoto vem desativado por padrão.

Por que o login root via SSH é tão ruim que todos recomendam desativá-lo?

    
por 25.12.2015 / 17:18