Estaba practicando ftp pero enfrenté un problema: el comando ls no funciona en ftp>. ¿Por qué? Verifiqué en 2 servidores remotos, pero ls tampoco funcionó y di una salida diferente cuando se ejecutó ls. Consulte a continuación las 2 cajas remotas.
A continuación se muestra mi servidor remoto donde instalé vsftpd hoy.
ravbholua@ravbholua-Aspire-5315:~$ ftp rs
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua):
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ravbholua"
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp>
Lo siguiente es para una máquina remota diferente donde tengo que enviar algunos archivos. Pero como ls en ftp> no funciona, ¿cómo transferiré archivos de mi casilla local a esa casilla porque no puedo confirmar sin ls si los archivos se han transferido o no?
ravbholua@ravbholua-Aspire-5315:~$ ftp 125.21.153.140
Connected to 125.21.153.140.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 1 of 10 allowed.
220-Local time is now 04:34. Server port: 21.
220-This server supports FXP transfers
220 You will be disconnected after 2 minutes of inactivity.
Name (125.21.153.140:ravbholua): peacenews
331 User peacenews OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200-FXP transfer: from 123.63.112.168 to 10.215.10.80
200 PORT command successful
Tenga en cuenta que para la máquina anterior, una vez que ejecuté ls en ftp>, el mensaje no volvió.
En ambas máquinas remotas, obtuve resultados diferentes cuando ejecuté ls en ftp>
man ftp
y encontré la-p
opción para usar en modo pasivo. Como seman ftp
menciona que ftp es una interfaz de usuario para el protocolo de transferencia de archivos estándar de Internet: ¡así que es la interfaz y no el cliente ftp! Lo que entiendo es que el cliente ftp usa esta interfaz (ftp) para transferir archivos.Respuestas:
FTP es un protocolo antiguo. Se basa en dos conexiones TCP: una conexión de control sobre la cual se intercambian comandos y conexiones de datos para el contenido de los archivos y también para la salida de comandos como
ls
. Lo que sucede aquí es que la conexión de control está establecida, pero las conexiones de datos no están pasando.Por defecto (modo activo), las conexiones de datos se establecen desde el remitente al receptor. Para la salida de
ls
, el servidor envía los datos, por lo que el servidor intenta abrir una conexión con el cliente. Esto funcionó bien cuando se inventó FTP, pero hoy en día, los clientes a menudo están detrás de un firewall o NAT que puede o no admitir FTP activo. Cambie al modo pasivo, donde el cliente siempre inicia la conexión de datos.Consulte el manual de su
ftp
comando para ver cómo cambiar al modo pasivo de forma predeterminada. Para una cosa de una sola vez, escribir el comandopassive
generalmente hace el truco.Es posible que desee cambiar a un cliente FTP más agradable como ncftp o lftp .
fuente
.netrc
en mi casilla local (simplemente había puesto hash al comienzo de la línea en .netrc). Eso es todo y luego, después del problema de ls que he estado enfrentando. ¿Cuál puede ser la razón por la que ls estaba funcionando bien antes y desde ayer no funciona?lftp
. Tengo experiencia trabajando con eso.lftp
Es realmente asombroso. También me gustaría agregar que acabo de comprobarlolftp
y funciona perfectamente sin problemas con ls.ls
aquí (en lftp) está mostrando la salida correctamente.Solución completa completa para el comando "ftp 500 Illegal PORT command". Haga clic en el siguiente enlace: http://www.ucodice.com/articles/ftp-500-illegal-port-command/ .
Extracto
Intentando conectar el servidor ftp y obtener el comando 500 Illegal port. Este problema puede ocurrir cuando el programa ftp no está configurado para el modo pasivo.
Puede obtener fragmentos de error como:
Para resolver este problema, puede definir el puerto o ftp en el archivo de configuración del servidor ftp y definir la dirección IP o el servidor PASV.
Verifique el archivo de configuración para ver las configuraciones a continuación.
Después de eso, reinicie el servicio ftp y verifique la conexión ftp.
fuente