Назад | Перейти на главную страницу

Попытка настроить веб-сервер в CentOS на HyperV - FTP не работает

Задний план

Я не специалист по Linux и даже не из командной строки, но мне было поручено настроить сервер Linux для внутренней сети компании.

Я установил установку CentOS 7 в HyperV в Windows 10. Затем я установил стек AMP внутри и получил доступ в Интернет из сети, проходящей через Win10 в CentOS. И у меня есть веб-сервер CentOS, у которого есть собственный IP-адрес, и он доступен из внешней сети.

Теперь я пытаюсь заставить работать FTP, поэтому, когда я перемещаю виртуальную машину на ее возможный реальный сервер, которого нет на моем рабочем столе, я мог перемещать файлы на него через FTP. Я следил за многочисленными руководствами, посвященными vsftp. Я его установил, добавил FTP доступ к firewall-cmd. Я испортил iptables, а затем выяснилось, что, по-видимому, CentOS использует firewalldне iptables?

Настройки

В /etc/vsftp/vsftp.conf:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist

Содержание /etc/vsftpd.userlist:

tester

Статус vsftpd:

Проблема

Когда я пытаюсь подключиться по FTP, я вижу:

Вопрос

Что я делаю не так?

Учитывая тот факт, что ваш FTP-клиент показывает «Соединение отклонено», я считаю, что ваш брандмауэр настроен правильно, но vsftpd просто не прослушивает адрес, к которому вы пытаетесь подключиться (192.168.15.101). Это сообщение появляется, когда служба либо не запущена на целевом сервере, либо не прослушивает адрес, к которому вы пытаетесь подключиться. Как видно на моем тестовом сервере в обеих таких ситуациях:

[root@host ~]# telnet 192.168.122.173 21
Trying 192.168.122.173...
telnet: connect to address 192.168.122.173: Connection refused

Если бы это была проблема брандмауэра, ваше сообщение об ошибке было бы «нет маршрута к хосту»:

[root@host ~]# telnet 192.168.122.173 21
Trying 192.168.122.173...
telnet: connect to address 192.168.122.173: No route to host

Я хотел бы подтвердить несколько вещей:

  • Vsftpd слушает этот адрес? Если вы видите следующее, значит, он должен прослушивать все доступные адреса IPv4 и IPv6 - если вы видите что-то еще, то это может быть вашей проблемой:

    [root@ftpsrv ~]# ss -pln|grep -i ftp
    tcp    LISTEN     0      32       -->:::21<--                   :::*                   users:(("vsftpd",pid=1636,fd=3))
    
  • Адрес, по которому вы подключаетесь, к тому же серверу, что и vsftpd? ip ad скажу вам - никогда не помешает перепроверить. Вы также можете попробовать подключиться к vsftpd по telnet с сервера, на котором он работает, просто чтобы убедиться, что он работает локально.

SFTP - еще один вариант, как упоминал @Sven, хотя он не использует vsftpd, а использует ваш сервер OpenSSH. На самом деле он включен по умолчанию во многих системах - просто проверьте свой /etc/ssh/sshd_config файл для чего-то вроде:

Subsystem       sftp    /usr/libexec/openssh/sftp-server

man 8 sftp-server может дать вам больше информации об этом.