Linux

嘗試在 HyperV 上的 CentOS 中設置 Web 伺服器 - FTP 不工作

  • January 24, 2018

背景

我不是 Linux,甚至不是命令行人員,但我的任務是為公司內部網設置 Linux 伺服器。

我已經在 Windows 10 上的 HyperV 中安裝了 CentOS 7。然後我在裡面設置了 AMP 堆棧,我從通過 Win10 進入 CentOS 的網路獲得了網際網路。我得到了 CentOS 網路伺服器,它有自己的 IP 地址,可以從外部網路訪問。

我現在正試圖讓 FTP 工作,這樣當我將虛擬機移動到它最終的真實伺服器(不在我的桌面上)時,我可以通過 FTP 將文件移動到它。我遵循了許多以vsftp. 我已經安裝了它,我已經添加了對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,以確保它在本地工作。

SFTP 是@Sven 提到的另一種選擇,儘管它不使用 vsftpd,而是使用您的 OpenSSH 伺服器。它實際上在許多系統中預設啟用 - 只需檢查您的/etc/ssh/sshd_config文件是否有以下內容:

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

man 8 sftp-server可以給你更多的資訊。

引用自:https://serverfault.com/questions/893922