Problema na mão
Você está relatando que não pode se conectar ao seu servidor ftp
remoto. Você recebe a seguinte mensagem de erro:
I won't open a connection to x.x.x.x remote server ip (only to x.x.x.x my public ip)
Dependendo de se você está usando uma solução php ftp
ou vsftpd
como sua solução de servidor ftp
, eu posso ter encontrado duas soluções possíveis.
1. Correção de configuração possível do VSFTP
Você só precisa corrigir sua configuração vsftp
. Eu encontrei esta postagem do fórum pelo usuário nhtrader que poderia fornecer uma solução possível. Por favor, leia-o na íntegra para se certificar de que se aplica a você.
-
Primeiramente, este é um servidor
ftp
localizado remotamente ou dentro de sua casa / LAN? Verifique se você pode autenticar ou pelo menos se comunicar com o servidor sem usar o serviçoftp
. -
Em segundo lugar, verifique se o seu roteador pode suportar o encaminhamento de porta e adicionar as portas relevantes que você precisa à lista de encaminhamento de porta do roteador. Se você estiver usando um VPS para o servidor
ftp
, faça referência à documentação referente aos métodos de encaminhamento e suporte de porta paraftp
, autenticação, gerenciamento remoto etc. -
O GRC, fornece uma ferramenta decente para verificar se a sua rede doméstica está bloqueando qualquer portas ou serviços que você irá requerer. Esta pode ser uma boa verificação para verificar se o seu encaminhamento de porta funciona e não está bloqueado pelo seu ISP. Você também precisará criar regras de firewall no seu host e servidor para permitir conexões através das portas que você deseja usar.
-
Em terceiro lugar, edite seu arquivo de configuração
vsftpd
localizado em/etc/vsftpd.conf
.
Adicione as seguintes entradas ao arquivo usando sudo nano /etc/vsftpd.conf
:
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES idle_session_timeout=600 data_connection_timeout=120 ftpd_banner=[Whatever message of your choice] secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem
As seguintes entradas podem ser de sua propriedade, como as portas que você deseja usar, estas são apenas as que usuário nhtrader usado .
listen_port=26 pasv_max_port=7004 pasv_min_port=7000
Se você estiver usando um endereço IP dinâmico e não tiver estático, use esta entrada:
pasv_addr_resolve=YES
Se você estiver usando um endereço IP estático, use isso:
pasv_address=x.x.x.x
Salve e feche o arquivo de configuração e reinicie o vsftpd
service.
sudo systemctl restart vsftpd.service
Agora você deve conseguir se conectar ao seu servidor ftp corretamente. Mais uma vez, sugiro que você examine a postagem no fórum , pois ela abrange muitos informações e possíveis problemas.
2. Correção possível do PHP
De acordo com o usuário Martin Prikryl em esta postagem de estouro de pilha , você pode resolver essa mensagem de erro exata movendo ftp_pav
após ftp_login
no php module
que você está usando em seu servidor.
$conn_id = ftp_connect('x.x.x.x'); ftp_login($conn_id, 'user', 'pass'); ftp_pasv($conn_id, true);
Ele encontrou essa resposta consultando a documentação do php . Por favor, leia todos os links para se certificar de que esta é uma correção aplicável para você.
Conclusão
Primeiro, verifique se sua configuração de vsftpd
ou outro ftp
está correta, se seu firewall permite ftp
de conexões e se você pode se conectar ao seu host. Consulte a documentação do seu VPS ou roteador para obter as melhores práticas ao fazer isso.
Eu também incluirei um link para a% man_de% manpage para referência. Tem um link para uma página explicando o que cada entrada do arquivo de configuração faz.
Por favor, comente se você tiver dúvidas ou problemas com esta resposta. Eu sugiro que você leia cada link que eu forneci completamente antes de tentar os comandos. Eu aprecio o feedback para corrigir quaisquer equívocos e melhorar minhas postagens. Eu posso atualizar minha resposta conforme necessário.
Melhor da sorte!