Computador A (assumindo que ip é 44.44.44.44) pode ftp o 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 ftp o 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 meu pc local e o computador A (44.44.44.44) foi conectado depois senha para fazer login em 44.44.44.44.
Em seguida, para inserir o comando no console do meu pc local:

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

Qual é o problema com meu túnel SSH?

Pense em chexum, o comando ftp certo é ftp localhost 2121 Mas novo problema. insira a descrição da imagem aqui

Comentários

  • Verifique sua ftp(1) página de manual para saber como especificar uma porta. É ' normalmente separado por um espaço (não por dois pontos) ou como uma -p opção. Você ' Também será necessário usar ftp passivo, portanto verifique o manual primeiro.
  • Não coloque texto como imagens.

Resposta

Sua abordagem não leva em conta que ao contrário de outros protocolos comuns, o FTP usa ambas as portas 20 e 21 sobre TCP por padrão .

O termo passivo refere-se a que o protocolo é ligeiramente comportado melhor do que as implementações iniciais.

Aqui está um link:

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

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

No Unix, também as portas privilegiadas < 1024, só podem ser vinculadas pela raiz.

Ou você:

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

Desta forma, você não fornece nenhuma porta extra, e apenas a usa com

ftp -p localhost 

ou se você não tiver root:

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

e então use:

ftp -p -P 2121 localhost 

De man ftp http://linux.die.net/man/1/ftp

modo passivo -p
porta -P

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

ftp -p localhost 2121 

Também deixarei um link para “Túneis SSH local e encaminhamento de porta remota explicado”

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

Por último, 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 Linuxes modernos o login remoto ssh como root vem desabilitado por padrão.

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

Comentários

  • O quê? A conexão de dados não usa a porta 20; ele usa uma porta aleatória > 1024. Além disso, ftp não parece ter uma opção -P, pelo menos não no Ubuntu 16.04. Assim, você não pode encaminhar ftp com ssh já que você não ' não sabe qual porta aleatória será escolhida quando a conexão de dados for estabelecida (e você obterá uma porta diferente para cada arquivo transferido ou cada vez que você ls).
  • Não, o servidor escuta em uma porta efêmera também. Tem que ser, já que pode servir a vários clientes e se usasse a porta 20 para cada um deles, não teria ideia de qual correspondia a qual sessão de controle.
  • Imprimi o RFC do FTP no meu ponto impressora matricial e estudei quando eu tinha 16 anos. Eu descobri que você pode emitir um comando PASV para um servidor, depois um comando PORT para o outro servidor com o endereço IP e o número da porta da resposta PASV do outro servidor e obtê-los para enviar o arquivo diretamente de um servidor para o outro, em vez de ter que fazer o download e carregá-lo sozinho no meu modem de 28,8 kbps Mais tarde, um programa chamado FXP foi lançado para fazer isso, e eu também escrevi meu próprio software de servidor FTP para WinNT que tirou o fôlego de qualquer outra coisa. Vá ver você mesmo uma resposta do PASV.
  • Você está confuso. Ele escuta na porta 21, não 20. Você se conecta ao servidor na porta 21 e emite um comando PORT, informando ao servidor a qual IP e número de porta ele deve se conectar, ou um comando PASV, caso em que começa a escutar a conexão de dados em uma porta efêmera e especifica qual porta está na resposta. De um comando quote pasv para ftp.gnu.org: " 227 Entrando no modo passivo (208,118,235,20,96,222) ". Observe que o servidor está escutando na porta 96.222 ou 24.798.
  • Por que não editá-lo para que fique correto?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *