Linux 技术手札

RHEL / CentOS 7 安装 SFTP

SFTP 是透过 SSH 连线作传送档案, 跟传统的 FTP 不同, SFTP 传送的内容都经过加密, 而且现在大多在 FTP 软件都支援 SFTP.

如果系统已经开启 SSH 服务器, SFTP 已经内建好, 不需要额外安装, 但跟 FTP 不同, 在默认的情况下, SSH 服务器可以允许传送档案及使用指令模式。但有些情况是只想给帐号开放上传/下载档案, 但不开启 SSH, 以下是在 RHEL 及 CentOS 7 的设定方法。

如果使用者帐号不存在, 先要建立新的使用者帐号, 以下帐号会设定成只可以用 SFTP, 但不能用 SSH, 以下建立 newuser 帐号:

/linux/adduser

  • $ sudo adduser newuser

给新帐号设定密码:

/linux/passwd

  • $ sudo passwd newuser

建立一个新目录, 用作给使用者上传/下载档案:

/linux/mkdir

  • $ sudo mkdir -p /var/sftp/uploads

给新建立的目录设定权限, /var/sftp 的 owner 是 root, /var/sftp/uploads 的 owner 是新帐号:

/linux/chown-chmod

  • $ sudo chown root:root /var/sftp
    $ sudo chmod 755 /var/sftp
    $ sudo chown newuser:newuser /var/sftp/uploads

接着开启 SSH 的设定档:

/etc/ssh/sshd_config

  • $ sudo vi /etc/ssh/sshd_config

在 /etc/ssh/sshd_config 加入以下内容:

Match User newuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

储存后以上内容后离开文字编辑器。

最后重新启动 SSH 服务器设定才会生效:

/linux/restart-sshd

  • $ sudo systemctl restart sshd

现在新帐号只可以用 SFTP 传送档案, 但想登入 SSH 服务器时, 便会出现以下错误:


This service allows sftp connections only.
Connection to localhost closed.

Exit mobile version