La computadora A (asumiendo que la ip es 44.44.44.44) puede ftp al 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. 

La computadora B (mi computadora local) no puede ftp al host 130.89.148.12. Construyamos un túnel ssh con el comando ssh de esta manera:

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

El túnel ssh entre mi PC local y la computadora A (44.44.44.44) se conectó después contraseña para iniciar sesión en 44.44.44.44.
Luego, para ingresar el comando en la consola de mi PC local:

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

¿Qué le pasa a mi túnel ssh?

Piense en chexum, el comando ftp correcto es ftp localhost 2121 Pero nuevo problema. ingrese la descripción de la imagen aquí

Comentarios

  • Consulte su ftp(1) página de manual sobre cómo especificar un puerto. Suele estar ' separados por un espacio (no dos puntos) o como una -p opción. Usted ' También necesitaré asegurarse de usar ftp pasivo, así que primero consulte el manual.
  • Por favor, no coloque texto como imágenes.

Respuesta

Su enfoque no tiene en cuenta que a diferencia de otros protocolos comunes, FTP usa tanto el puerto 20 como el puerto 21 sobre TCP por defecto .

El término pasivo se refiere a que el protocolo se comporta ligeramente mejor que las implementaciones iniciales.

Aquí hay un enlace:

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

El puerto 20 / TCP se usa para datos y el puerto 21 / TCP para comandos .

En Unix, también los puertos privilegiados < 1024, solo pueden estar vinculados por root.

Entonces, o lo hace:

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

De esta manera no le da ningún puerto extra, y solo lo usa con

ftp -p localhost 

o si no tiene root:

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

y luego use:

ftp -p -P 2121 localhost 

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

-p modo pasivo
-P puerto

o si tiene una versión de ftp que no es compatible con -P (Debian 9 / Ubuntu 16.04):

ftp -p localhost 2121 

También dejaré un enlace a «Explicación del reenvío de puertos local y remoto de los túneles SSH»

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

Por último, recomendaría no utilizar root en el sistema remoto para conexiones ssh. root es una cuenta muy poderosa y solo debe reservarse para la administración del sistema.

Además, en muchos Linux modernos, el inicio de sesión remoto ssh como root viene deshabilitado por defecto.

¿Por qué el inicio de sesión de root a través de SSH es tan malo? que todo el mundo aconseja desactivarlo?

Comentarios

  • ¿Qué? La conexión de datos no usa el puerto 20; utiliza un puerto aleatorio > 1024. Además, ftp no parece tener una opción -P, al menos no en Ubuntu 16.04. Por lo tanto, no puede reenviar ftp con ssh ya que ' no sabe qué puerto aleatorio se elegirá cuando se establezca la conexión de datos (y obtiene uno diferente para cada archivo transferido o cada vez que ls).
  • No, el servidor también escucha en un puerto efímero. Tiene que hacerlo, ya que puede servir a varios clientes y si usara el puerto 20 para cada uno de ellos, no tendría idea de cuál correspondía a qué sesión de control.
  • Imprimí el RFC de FTP en mi punto impresora matricial y la estudié cuando tenía 16 años. Me di cuenta de que puede emitir un comando PASV a un servidor, luego un comando PORT al otro servidor con la dirección IP y el número de puerto de la respuesta PASV del otro servidor y obtenerlos para enviar el archivo directamente de un servidor a otro en lugar de tener que descargarlo y cargarlo yo mismo a través de mi módem de 28,8 kbps. Más tarde, apareció un programa llamado FXP que podía hacer eso, y también escribí mi propio software de servidor FTP para WinNT que hizo volar los pantalones de cualquier otra cosa. Vaya a ver una respuesta PASV usted mismo.
  • Está confundido. Escucha en el puerto 21, no en el 20. Usted se conecta al servidor en el puerto 21, luego emite un comando PORT, indicándole al servidor a qué IP y número de puerto debe conectarse, o un comando PASV, en cuyo caso comienza a escuchar la conexión de datos en un puerto efímero y especifica qué puerto está en la respuesta. Desde un comando entre comillas pasv a ftp.gnu.org: " 227 Ingresando al modo pasivo (208,118,235,20,96,222) ". Tenga en cuenta que el servidor está escuchando en el puerto 96,222 o 24,798.
  • ¿Por qué no editarlo para que sea correcto?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *