温馨提示×

如何使用Linux SFTP进行远程登录

小樊
39
2025-10-31 23:12:51
栏目: 智能运维

一、前置准备:安装与配置SFTP服务

  1. 安装OpenSSH服务器
    大多数Linux发行版默认包含OpenSSH服务器(自带SFTP功能)。若未安装,可通过以下命令安装:

    • Debian/Ubuntu:sudo apt update && sudo apt install openssh-server
    • CentOS/RHEL:sudo yum install openssh-server
    • Fedora:sudo dnf install openssh-server
  2. 配置SFTP服务(可选但推荐)
    编辑SSH配置文件/etc/ssh/sshd_config,完成以下设置以增强安全性:

    • 确保SFTP子系统启用(默认已开启):Subsystem sftp /usr/lib/openssh/sftp-server(部分系统路径为/usr/libexec/openssh/sftp-server);
    • 限制用户访问(以sftpusers组为例):在文件末尾添加:
      Match Group sftpusers
          ChrootDirectory %h  # 限制用户只能访问自己的家目录
          ForceCommand internal-sftp  # 强制使用SFTP,禁止SSH shell访问
          AllowTcpForwarding no
          X11Forwarding no
      
    • 创建sftpusers组并添加用户:sudo groupadd sftpuserssudo usermod -aG sftpusers your_username
    • 设置家目录权限:sudo chown root:root /home/your_usernamesudo chmod 755 /home/your_username(用户家目录必须归root所有,权限为755)。
  3. 重启SSH服务
    应用配置变更:sudo systemctl restart sshd(Debian/Ubuntu用ssh替代sshd)。

二、使用SFTP连接远程服务器

  1. 命令行连接
    基本语法:sftp [选项] 用户名@远程主机。常见场景:

    • 默认端口(22)连接:sftp your_username@remote_host(如192.168.1.100或域名);
    • 指定端口连接(如22806):sftp -oPort=22806 your_username@remote_host
      输入密码后,进入SFTP交互界面(提示符为sftp>)。
  2. 图形界面连接(可选)
    若偏好图形操作,可使用以下工具:

    • FileZilla(跨平台):打开后输入远程主机、用户名、端口,选择SFTP协议即可连接;
    • WinSCP(Windows):类似FileZilla,支持拖拽文件传输;
    • Cyberduck(Mac):支持SFTP、FTP等多种协议。

三、SFTP常用命令 连接成功后,可通过以下命令完成文件操作:

  • 目录操作ls(查看远程目录内容)、cd 远程路径(切换远程目录)、lcd 本地路径(切换本地目录)、mkdir 远程目录名(创建远程目录)、rmdir 远程目录名(删除远程空目录);
  • 文件操作get 远程文件 [本地路径](下载单个文件,如get index.php ~/downloads/)、put 本地文件 [远程路径](上传单个文件,如put ~/Documents/report.pdf /var/www/)、mget 远程文件*(下载多个文件,支持通配符)、mput 本地文件*(上传多个文件)、rm 远程文件(删除远程文件);
  • 其他操作pwd(查看远程当前目录)、lpwd(查看本地当前目录)、exit/bye(退出SFTP会话)。

四、安全注意事项

  • 优先使用密钥认证:生成密钥对(ssh-keygen -t rsa),将公钥复制到远程服务器(ssh-copy-id your_username@remote_host),避免每次输入密码;
  • 限制用户权限:通过sftpusers组和ChrootDirectory限制用户只能访问自己的家目录,防止越权操作;
  • 定期更新系统:保持Linux内核、OpenSSH服务器等软件为最新版本,修复已知安全漏洞;
  • 配置防火墙:仅允许必要IP地址访问SSH端口(默认22),如使用ufwsudo ufw allow from 192.168.1.0/24 to any port 22

0