SFTP文件共享實現步驟
SFTP基于SSH協議,默認集成在大多數Linux發行版的OpenSSH服務器中。若未安裝,可通過以下命令完成:
sudo apt update && sudo apt install openssh-server
sudo yum install openssh-server
或 sudo dnf install openssh-server
sudo systemctl start sshd && sudo systemctl enable sshd
。編輯SSH配置文件(/etc/ssh/sshd_config
),調整以下關鍵參數以啟用SFTP并強化安全:
Subsystem sftp internal-sftp
(默認已存在,無需修改)。sftpusers
替換為你的用戶組(后續需創建),限制用戶只能通過SFTP登錄且無法使用SSH shell:Match Group sftpusers
ChrootDirectory %h # 將用戶限制在其家目錄(需為root所有)
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitRootLogin no
,防止root用戶直接登錄。sudo systemctl restart sshd
。為文件共享創建專用用戶,并設置符合安全要求的目錄結構:
sudo groupadd sftpusers # 創建SFTP用戶組
sudo useradd -G sftpusers -d /home/sftpuser -s /sbin/nologin sftpuser # 創建用戶并加入組,禁止shell登錄
sudo passwd sftpuser # 設置用戶密碼
chroot
要求),權限設為755:sudo chown root:root /home/sftpuser && sudo chmod 755 /home/sftpuser
upload
),屬主為用戶本身,允許用戶上傳文件:sudo mkdir /home/sftpuser/upload && sudo chown sftpuser:sftpusers /home/sftpuser/upload && sudo chmod 755 /home/sftpuser/upload
使用客戶端工具連接服務器,常見方式有兩種:
sftp username@server_ip
(替換為實際用戶名和服務器IP),輸入密碼后進入SFTP交互模式,提示符變為sftp>
。連接成功后,通過以下命令或圖形界面操作實現文件共享:
put local_file [remote_path]
(如put ~/test.txt /upload/
,將本地test.txt
上傳至服務器/upload/
目錄)。upload
目錄。get remote_file [local_path]
(如get /upload/test.txt ~/Downloads/
,將服務器test.txt
下載至本地Downloads
目錄)。ls
(命令行)或點擊圖形化界面的“刷新”按鈕。mkdir new_folder
(命令行)。rm file.txt
(命令行)或選中文件后按Delete
鍵(圖形化)。為確保文件共享安全,需采取以下額外措施:
ssh-keygen
),將公鑰(id_rsa.pub
)復制到服務器用戶目錄的.ssh/authorized_keys
文件中,配置sshd_config
中的PasswordAuthentication no
禁用密碼登錄。sudo ufw allow 22 && sudo ufw enable
sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
sudo apt update && sudo apt upgrade
(Debian/Ubuntu)或sudo yum update
(CentOS/RHEL)更新系統和OpenSSH,修復安全漏洞。