如何通过SFTP在Linux上远程管理服务器
导读:通过SFTP在Linux上远程管理服务器的完整步骤 1. 安装OpenSSH服务器(若未安装) SFTP是OpenSSH的一部分,大多数Linux发行版默认安装。若未安装,可通过以下命令安装: Debian/Ubuntu:sudo apt...
通过SFTP在Linux上远程管理服务器的完整步骤
1. 安装OpenSSH服务器(若未安装)
SFTP是OpenSSH的一部分,大多数Linux发行版默认安装。若未安装,可通过以下命令安装:
- Debian/Ubuntu:
sudo apt update & & sudo apt install openssh-server - CentOS/RHEL/Fedora:
sudo yum install openssh-server或sudo dnf install openssh-server
安装完成后,通过systemctl status sshd(CentOS/RHEL)或systemctl status ssh(Ubuntu/Debian)检查服务状态,确保其处于active (running)。
2. 配置SFTP服务
编辑SSH配置文件/etc/ssh/sshd_config,添加或修改以下内容以限制用户仅能通过SFTP访问并增强安全性:
# 确保SFTP子系统启用(默认路径可能因系统而异)
Subsystem sftp internal-sftp
# 限制sftpusers组的用户只能使用SFTP,且锁定在自家目录
Match Group sftpusers
ChrootDirectory %h # 将用户限制在家目录(Chroot环境)
ForceCommand internal-sftp # 强制使用SFTP,禁止SSH shell访问
AllowTcpForwarding no # 禁止TCP转发
X11Forwarding no # 禁止X11转发
关键说明:
ChrootDirectory %h:将用户限制在其家目录(如/home/username),防止访问系统其他目录;internal-sftp:使用OpenSSH内置的SFTP服务,无需额外安装;- 禁用
AllowTcpForwarding和X11Forwarding可进一步减少攻击面。
3. 创建SFTP用户组与用户
为SFTP用户创建专用组,并添加用户(避免使用系统管理员账户):
# 创建sftpusers组
sudo groupadd sftpusers
# 创建用户(如"sftpuser"),并添加到sftpusers组
sudo useradd -m -G sftpusers -s /bin/false sftpuser # -s /bin/false禁止shell登录
# 设置用户密码(或使用密钥认证,更安全)
sudo passwd sftpuser
关键说明:
-G sftpusers:将用户添加到sftpusers组;-s /bin/false:禁止用户通过SSH登录shell,仅允许SFTP访问;- 若需更严格的权限控制,可将用户的主目录所有者设为
root(后续步骤会提及)。
4. 设置用户目录权限
SFTP的ChrootDirectory要求家目录必须由root拥有且权限为755,用户无法写入家目录本身,但可在家目录下创建子目录(如upload)用于文件上传:
# 创建用户家目录(若未自动创建)
sudo mkdir -p /home/sftpuser
# 设置家目录所有者为root,权限为755
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
# 在家目录下创建可上传文件的子目录(如upload)
sudo mkdir -p /home/sftpuser/upload
# 设置子目录所有者为用户,权限为755(或775,根据需求)
sudo chown sftpuser:sftpusers /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload
关键说明:
- 家目录的
root所有权是ChrootDirectory的要求,否则用户无法连接; - 子目录(如
upload)的所有者为sftpuser,允许用户上传文件。
5. (可选)配置密钥认证(更安全)
为避免密码泄露,建议使用SSH密钥认证:
- 本地机器生成密钥对(若已有密钥可跳过):
ssh-keygen -t rsa -b 4096 -f ~/.ssh/sftp_key # 生成4096位RSA密钥对 - 将公钥复制到服务器:
ssh-copy-id -i ~/.ssh/sftp_key.pub sftpuser@remote_host # 自动复制公钥到服务器的~/.ssh/authorized_keys - 禁用密码认证(可选,增强安全性):
编辑/etc/ssh/sshd_config,设置PasswordAuthentication no,然后重启SSH服务。
6. 重启SSH服务应用配置
修改配置后,重启SSH服务使更改生效:
- Debian/Ubuntu:
sudo systemctl restart ssh - CentOS/RHEL/Fedora:
sudo systemctl restart sshd
7. 使用SFTP客户端连接
命令行连接
在本地终端输入以下命令,替换your_username(如sftpuser)和remote_host(服务器IP或域名):
sftp your_username@remote_host
输入密码(或密钥密码)后,进入SFTP交互界面。
图形化客户端连接
推荐使用FileZilla(跨平台)或WinSCP(Windows):
- 协议选择
SFTP; - 主机填写服务器IP或域名;
- 端口保持
22(默认); - 用户名/密码或密钥认证(根据配置选择)。
8. 常用SFTP命令
连接成功后,可使用以下命令管理文件:
- 查看远程目录内容:
ls - 切换远程目录:
cd remote_dir(如cd upload) - 下载文件到本地:
get remote_file [local_file](如get example.txt ~/Downloads/example.txt) - 上传文件到远程:
put local_file [remote_file](如put ~/Documents/report.pdf /upload/report.pdf) - 创建远程目录:
mkdir remote_dir(如mkdir new_folder) - 删除远程文件:
rm remote_file(如rm old_file.txt) - 删除远程空目录:
rmdir remote_dir(如rmdir empty_folder) - 退出SFTP会话:
exit或bye
9. 安全注意事项
- 限制访问IP:通过防火墙(如
ufw、iptables)限制SSH端口(22)的访问,仅允许信任的IP地址连接; - 定期更新:保持系统和OpenSSH软件最新,修补安全漏洞;
- 监控日志:通过
tail -f /var/log/auth.log(Ubuntu/Debian)或tail -f /var/log/secure(CentOS/RHEL)查看SFTP登录日志,及时发现异常; - 禁用root登录:编辑
/etc/ssh/sshd_config,设置PermitRootLogin no,防止root账户通过SFTP登录。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过SFTP在Linux上远程管理服务器
本文地址: https://pptw.com/jishu/735971.html
