CentOS上搭建SFTP 在CentOS上安裝SFTP服務通常是通過安裝OpenSSH來實現的,因為OpenSSH預設提供了SFTP功能。以下是在CentOS上安裝SFTP的步驟: 一、安裝OpenSSH伺服器: sudo yum install openssh-server 啟動SSH服務: s ...
CentOS上搭建SFTP
在CentOS上安裝SFTP服務通常是通過安裝OpenSSH來實現的,因為OpenSSH預設提供了SFTP功能。以下是在CentOS上安裝SFTP的步驟:
一、安裝OpenSSH伺服器:
sudo yum install openssh-server
啟動SSH服務:
sudo systemctl start sshd
確保SSH服務隨系統啟動而啟動:
sudo systemctl enable sshd
檢查SSH服務狀態:
sudo systemctl status sshd
這將顯示SSH服務是否正在運行以及其他相關信息。
現在,你的CentOS伺服器上應該已經安裝並運行了SFTP服務。你可以使用任何支持SFTP的客戶端(如WinSCP、FileZilla等)連接到伺服器。確保使用SSH協議(埠22)進行連接,並使用具有適當許可權的用戶憑據進行身份驗證。
二、配置sftp用戶、訪問目錄等
下麵是一個完整的例子,假設我們要創建一個名為sftpuser的用戶,限制他只能訪問/sftp目錄,並且使用特定的SSH配置文件。
創建SFTP用戶:
sudo useradd -m -s /sbin/nologin sftpuser
設置用戶密碼:
sudo passwd sftpuser
創建用戶的SFTP根目錄:
sudo mkdir /sftp
設置根目錄的許可權(根目錄必須是root用戶,否則sftp連接不上):
sudo chown root:root /sftp
sudo chmod 755 /sftp
在根目錄下層建立子目錄方可以寫入(根目錄只能讀取不能寫入,因為根目錄必須是root用戶,而sftp訪問的用戶卻是我們新建的sftpuser)
mkdir /sftp/sharedata
chown sftpuser:sftpuser /sftp/sharedata
創建新用戶自定義ssh配置
簡單點直接修改/etc/ssh/sshd_config也可以,這樣服務啟動選項sshd.service就不用改了
創建用戶的SSH配置文件目錄:
sudo mkdir /home/sftpuser/.ssh
複製系統SSH配置文件到用戶目錄:
sudo cp /etc/ssh/sshd_config /home/sftpuser/.ssh/sshd_config
編輯用戶的SSH配置文件:
sudo vi /home/sftpuser/.ssh/sshd_config
在這個文件中,確保你有適當的配置,例如使用ChrootDirectory限制用戶訪問,以及其他任何你想要自定義的配置。註意將這個配置節放到最後,否則老是報錯: "Directive 'UseDNS' is not allowed within a Match block" 表明在 Match 塊中不允許使用 UseDNS 這個指令。
Match User sftpuser
ChrootDirectory /sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
給新用戶的用戶目錄遞歸設置歸屬
chown -R sftpuser:sftpuser /home/sftpuser
給配置文件設置讀取許可權
chmod 755 /home/sftpuser/.ssh/sshd_config
修改SSH服務啟動選項
打開SSH服務的啟動選項文件,可以使用systemctl status sshd查看找到(通常在 /etc/systemd/system/sshd.service 或 /etc/init.d/sshd 或/usr/lib/systemd/system/sshd.service),並修改為:
ExecStart=/usr/sbin/sshd -f /home/sftpuser/.ssh/sshd_config -D $OPTIONS
或者
/usr/sbin/sshd -f /home/sftpuser/.ssh/sshd_config $OPTIONS
重新載入SSH服務:
systemctl daemon-reload
systemctl restart sshd
現在,用戶sftpuser被限制在sftp目錄下,並且只能使用SFTP進行文件傳輸。他們的SSH配置文件位於/home/sftpuser/.ssh/sshd_config,這樣他們可以自定義他們的SSH行為而不影響其他用戶或系統級別的配置。
查看錯誤日誌:
檢查系統日誌:如果問題仍然存在,請查看系統日誌文件,如 /var/log/auth.log 或 /var/log/secure,以獲取有關寫入文件失敗的詳細信息。日誌文件中可能會提供關於出現問題的原因的線索。
三、多SFTP用戶如何配置
SSH服務啟動選項只能指定一個配置文件。如果你想要為多個用戶指定不同的配置,你需要為每個用戶創建單獨的配置文件,併在啟動選項中指定這些文件。
例如,如果你有兩個用戶 sftpuser1 和 sftpuser2,你可以為他們分別創建不同的配置文件,然後在SSH服務的啟動選項中指定這些文件。
為每個用戶創建配置文件:
sudo cp /etc/ssh/sshd_config /home/sftpuser1/.ssh/sshd_config
sudo cp /etc/ssh/sshd_config /home/sftpuser2/.ssh/sshd_config
編輯每個用戶的配置文件並根據需要進行自定義:
sudo vi /home/sftpuser1/.ssh/sshd_config
Match User sftpuser1
ChrootDirectory /sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
sudo vi /home/sftpuser2/.ssh/sshd_config
Match User sftpuser2
ChrootDirectory /sftp/other_directory
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
修改SSH服務的啟動選項,分別指定每個用戶的配置文件:
ExecStart=/usr/sbin/sshd -f /home/sftpuser1/.ssh/sshd_config -f /home/sftpuser2/.ssh/sshd_config -D $OPTIONS
或者
/usr/sbin/sshd -f /home/sftpuser1/.ssh/sshd_config -f /home/sftpuser2/.ssh/sshd_config $OPTIONS
這樣配置後,每個用戶將使用自己的配置文件,可以分別定製他們的SSH行為。