修改CentOS SFTP配置文件(/etc/ssh/sshd_config)的詳細步驟
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo su -
使用文本編輯器(如vi
/nano
)打開/etc/ssh/sshd_config
文件:
sudo vi /etc/ssh/sshd_config
或(若系統未安裝nano
,可通過sudo yum install nano -y
安裝):
sudo nano /etc/ssh/sshd_config
找到Subsystem sftp
行(通常位于文件末尾),確保未被注釋(無#
前綴)。默認路徑為/usr/libexec/openssh/sftp-server
,也可替換為internal-sftp
(更輕量,無需額外進程):
# 原始配置(默認)
Subsystem sftp /usr/libexec/openssh/sftp-server
# 修改為(推薦)
Subsystem sftp internal-sftp
作用:定義SFTP服務的運行方式,internal-sftp
是OpenSSH內置模塊,無需單獨安裝。
通過Match
塊限制特定用戶組(如sftpusers
)的訪問權限,增強安全性:
Match Group sftpusers
ChrootDirectory %h # 將用戶限制在其家目錄(需設置正確權限)
ForceCommand internal-sftp # 強制使用SFTP,禁止SSH shell訪問
AllowTcpForwarding no # 禁用TCP轉發(防止隧道攻擊)
X11Forwarding no # 禁用X11轉發
說明:
Match Group sftpusers
:匹配 sftpusers
組的用戶;ChrootDirectory %h
:將用戶根目錄鎖定為其家目錄(如/home/username
);ForceCommand internal-sftp
:禁止用戶執行shell命令,僅允許SFTP操作。若需限制特定用戶(如ftpuser
),可將Match
塊改為Match User
:
Match User ftpuser
ChrootDirectory /home/ftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
作用:僅允許ftpuser
通過SFTP訪問其家目錄。
若未創建sftpusers
組,需先創建組并添加用戶:
# 創建sftpusers組
sudo groupadd sftpusers
# 添加用戶至sftpusers組(如username)
sudo usermod -aG sftpusers username
# 設置用戶家目錄權限(關鍵!ChrootDirectory要求父目錄屬root且權限為755)
sudo chown root:root /home/username
sudo chmod 755 /home/username
注意:用戶家目錄需屬root,否則SFTP連接會報錯。
Esc
鍵,輸入:wq
(保存并退出);Ctrl+O
(保存),Ctrl+X
(退出)。修改配置后,需重啟SSH服務使更改生效:
sudo systemctl restart sshd
驗證服務狀態(確保服務正常運行):
sudo systemctl status sshd
若顯示active (running)
,則表示服務已啟動。
使用SFTP客戶端(如命令行工具)驗證配置是否生效:
sftp username@your_server_ip
預期結果:
ChrootDirectory
,用戶登錄后將直接進入其家目錄(如/home/username
);ls
、put
、get
等SFTP命令,確認功能正常;Match Group
,非sftpusers
組用戶仍可通過SSH登錄(需調整配置禁用SSH shell訪問)。ChrootDirectory
指定的目錄(如家目錄)必須屬root,且權限為755
,否則SFTP連接會失??;sshd -T | grep sftp
命令檢查SFTP配置語法是否正確;/var/log/secure
)定位問題(如權限錯誤、配置語法錯誤)。