Я не специалист по 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
может дать вам больше информации об этом.