Linux SFTP远程管理服务器指南
SFTP(SSH File Transfer Protocol)是基于SSH的安全文件传输协议,不仅支持文件传输,还可通过命令行实现远程服务器的文件管理(如创建/删除目录、移动文件等)。以下是使用SFTP远程管理Linux服务器的完整步骤:
大多数Linux发行版默认安装了OpenSSH服务器(包含SFTP功能),若未安装,可通过以下命令安装:
sudo apt update
sudo apt install openssh-server
sudo yum install openssh-server # CentOS/RHEL 7及以下
sudo dnf install openssh-server # Fedora/CentOS/RHEL 8及以上
安装完成后,启动SSH服务并设置为开机自启动:
# Debian/Ubuntu
sudo systemctl start ssh
sudo systemctl enable ssh
# CentOS/RHEL/Fedora
sudo systemctl start sshd
sudo systemctl enable sshd
打开/etc/ssh/sshd_config文件(需root权限),修改以下内容以限制用户只能通过SFTP访问并增强安全性:
sudo nano /etc/ssh/sshd_config
Subsystem sftp行,修改为使用内置的internal-sftp(更轻量且无需额外安装):Subsystem sftp internal-sftp
sftpusers组的用户限制在自家目录(ChrootDirectory),禁止端口转发等危险操作:Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注:
%h表示用户的主目录路径,ChrootDirectory需设置为root所有(后续会配置),防止用户越权访问系统文件。
sudo groupadd sftpusers
mysftp为例,创建用户时设置密码(或后续用密钥认证),并加入sftpusers组:sudo useradd -m -G sftpusers -s /bin/false mysftp # -s /bin/false禁止登录shell
sudo passwd mysftp # 设置密码
注:
-s /bin/false限制用户无法通过SSH登录shell,仅能使用SFTP。
sudo chown root:root /home/mysftp
sudo chmod 755 /home/mysftp
upload),并设置用户为所有者:sudo mkdir /home/mysftp/upload
sudo chown mysftp:sftpusers /home/mysftp/upload # 用户拥有读写权限,组仅读
sudo chmod 755 /home/mysftp/upload
修改配置文件后,重启SSH服务使更改生效:
# Debian/Ubuntu
sudo systemctl restart ssh
# CentOS/RHEL/Fedora
sudo systemctl restart sshd
在本地终端输入以下命令,替换your_username(如mysftp)和remote_host(服务器IP或域名):
sftp your_username@remote_host
输入密码后,进入SFTP命令行界面(提示符变为sftp>)。
推荐使用以下工具(均支持SFTP):
连接成功后,可使用以下命令实现远程文件管理:
ls:列出当前远程目录内容(加-l可显示详细信息)。cd [目录名]:切换远程目录(如cd upload进入upload目录)。mkdir [目录名]:在远程创建目录(需在可写子目录下操作,如upload内)。rmdir [目录名]:删除远程空目录。get [远程文件] [本地路径]:下载远程文件到本地(如get file.txt ~/Downloads)。put [本地文件] [远程路径]:上传本地文件到远程(如put ~/Documents/report.pdf ./)。rm [远程文件]:删除远程文件(如rm old_file.txt)。pwd:查看远程当前目录路径。lpwd:查看本地当前目录路径。exit/bye:退出SFTP会话。ssh-keygen -t rsa -b 4096(默认保存在~/.ssh/id_rsa)。ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@remote_host。sftp -o PreferredAuthentications=publickey your_username@remote_host。ufw、iptables)仅允许特定IP访问SSH端口(默认22):sudo ufw allow from 192.168.1.100 to any port 22 # Ubuntu(ufw)
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT # CentOS(iptables)
sudo apt update && sudo apt upgrade # Debian/Ubuntu
sudo yum update # CentOS/RHEL
/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(CentOS/RHEL)查看SFTP登录记录,排查异常行为:sudo tail -f /var/log/auth.log
通过以上步骤,可实现Linux SFTP的安全远程管理,既满足文件传输需求,又能通过命令行完成服务器文件管理任务。