在CentOS系統上搭建SFTP服務器通常涉及安裝OpenSSH服務器,并對其進行相應的配置。以下是詳細的搭建步驟:
確保你的CentOS系統已經安裝了OpenSSH服務器。如果沒有安裝,可以使用以下命令進行安裝:
sudo yum install openssh-server
安裝完成后,啟動SSH服務,并設置其開機自啟:
sudo systemctl start sshd
sudo systemctl enable sshd
確保SSH服務正在運行,并且沒有錯誤:
sudo systemctl status sshd
假設我們要創建一個名為 sftpuser
的用戶,限制他只能訪問 /sftp
目錄,并且使用特定的SSH配置文件。
sudo useradd -m -s /sbin/nologin sftpuser
sudo passwd sftpuser
sudo mkdir /sftp
sudo chown root:root /sftp
sudo chmod 755 /sftp
sudo mkdir /sftp/sharedata
sudo chown sftpuser:sftpuser /sftp/sharedata
sudo mkdir /home/sftpuser/.ssh
sudo cp /etc/ssh/sshd_config /home/sftpuser/.ssh/sshd_config
sudo vi /home/sftpuser/.ssh/sshd_config
在配置文件中,添加以下配置:
Match User sftpuser
ChrootDirectory /sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注意將這個配置節放到最后,否則會出現“Directive ‘UseDNS’ is not allowed within a Match block”的錯誤。
sudo chown -R sftpuser:sftpuser /home/sftpuser
sudo chmod 755 /home/sftpuser/.ssh/sshd_config
如果你需要為多個用戶指定不同的配置,可以在SSH服務的啟動選項中指定這些文件。
sudo systemctl daemon-reload
sudo systemctl restart sshd
至此,你已經成功在CentOS上搭建了一個SFTP服務器,并且創建了一個受限訪問的SFTP用戶。你可以使用任何支持SFTP的客戶端(如WinSCP、FileZilla等)連接到服務器,并使用SSH協議(端口22)進行連接,確保使用具有適當權限的用戶憑據進行身份驗證。
如果系統的防火墻開啟了FTP端口(默認為21),需要添加規則允許FTP流量通過防火墻。
使用以下命令添加FTP的防火墻規則:
sudo firewall-cmd --zone=public --permanent --add-port=21/tcp
sudo firewall-cmd --reload
為了提高服務器的安全性,可以考慮以下額外的安全設置:
禁用root登錄:
編輯 /etc/ssh/sshd_config
文件,找到以下行并注釋掉或修改為:
PermitRootLogin no
更改SSH端口:
將SSH端口改為10000以上,以減少被自動掃描到的幾率。
sudo vi /etc/ssh/sshd_config
將以下行:
Port 22
改為:
Port 10001
限制用戶訪問權限:
使用 chroot
將用戶限制在其主目錄中,防止用戶訪問其他系統目錄。
sudo chroot_local_user=YES
關閉不必要的服務:
關閉不必要的服務以減少攻擊面。
sudo systemctl stop sshd
sudo systemctl disable sshd
通過以上步驟,你可以在CentOS系統上成功搭建一個安全的SFTP服務器。確保在進行任何配置更改后,都重新加載或重啟相應的服務以使更改生效。