SFTP文件共享实现步骤
SFTP基于SSH协议,默认集成在大多数Linux发行版的OpenSSH服务器中。若未安装,可通过以下命令完成:
sudo apt update && sudo apt install openssh-serversudo yum install openssh-server 或 sudo dnf install openssh-serversudo 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/sftpuserupload),属主为用户本身,允许用户上传文件: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 enablesudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reloadsudo apt update && sudo apt upgrade(Debian/Ubuntu)或sudo yum update(CentOS/RHEL)更新系统和OpenSSH,修复安全漏洞。