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.
你可能感兴趣的内容: