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.
Comentários
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”
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?
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.