温馨提示×

怎样在 centos 用 sftp

小樊
44
2026-09-02 22:39:20
栏目: 智能运维

在 CentOS 上使用 SFTP(SSH File Transfer Protocol) 通常不需要额外安装服务,因为 SFTP 是 OpenSSH 的一部分。下面从客户端使用服务端配置两个方面说明。


一、CentOS 作为 SFTP 客户端(连别的服务器)

1. 基本连接

sftp user@remote_host

示例:

sftp root@192.168.1.100

如果是非默认端口(如 2222):

sftp -P 2222 user@remote_host

2. 常用 SFTP 命令

连接成功后:

ls            # 查看远程目录
lls           # 查看本地目录
cd            # 切换远程目录
lcd           # 切换本地目录
get file      # 下载文件
put file      # 上传文件
get -r dir    # 递归下载
put -r dir    # 递归上传
mkdir         # 远程建目录
rm            # 删除远程文件
exit / bye    # 退出

3. 使用密钥登录(推荐)

sftp -i ~/.ssh/id_rsa user@host

二、CentOS 作为 SFTP 服务端(让别人连你)

CentOS 默认已安装 OpenSSH,一般已支持 SFTP。

1. 确认 SSH 服务

systemctl status sshd

如未启动:

systemctl start sshd
systemctl enable sshd

2. 默认即可使用 SFTP

只要用户能 SSH 登录,就能 SFTP:

sftp user@your_centos_ip

三、限制用户只能 SFTP(不能 SSH)

1. 创建用户

useradd sftpuser
passwd sftpuser

2. 修改 sshd 配置

vim /etc/ssh/sshd_config

在文件末尾添加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

3. 设置目录权限(非常重要)

chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

4. 重启 SSH

systemctl restart sshd

这样用户只能 SFTP,且被限制在主目录。


四、防火墙(如有)

firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

五、常见问题

  • 连不上:检查 IP、端口、防火墙、SELinux
  • 权限拒绝:Chroot 目录必须属主为 root
  • SFTP 很慢:检查 DNS 反向解析,可加:
UseDNS no

如果你是想:

  • 图形化工具(如 FileZilla)
  • 配置 多用户 SFTP
  • 日志审计
  • Docker 中 SFTP

可以告诉我具体场景,我可以进一步说明。

0