[步骤] SFTP 安全 (多用户免密码登录)

注意:

在设置多用户免密码登录 SFTP 之前要先搭建 SFTP

正文:

步骤一:指定 SFTP 公钥的存放位置

1.1 修改 /etc/ssh/sshdsftp_config 配置文件

# vim /etc/ssh/sshdsftp_config

并将部分内容修改如下:

......
Subsystem       sftp    internal-sftp -l VERBOSE -f LOCAL3
Match LocalPort 2222
Match Group sftp
ChrootDirectory /%u
AuthorizedKeysFile /etc/ssh/authorized_keys/%u/.ssh/authorized_keys
ForceCommand    internal-sftp -m 770
AllowTcpForwarding no
X11Forwarding no


补充:
1) 这里以将:
SFTP 的端口设置为 2222
SFTP 用户可以进入的目录只能为 /<user>
SFTP 用户存放的公钥的文件为 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys
SFTP 上传的文件默认权限是 770 (-m 770 参数也可以使用 -u 770 替代,但是 -u 参数有时候会不起作用)
为例
2) 其它配置方案可以参考

SFTP 的配置案例

(注意:当使用 %u 参数来保证不通的用户使用不通的 SFTP 目录时,用户名为 user_a 、user_b、user_c 的用户可能会使用同一个名为 user 的目录)

1.2 让限制 SFTP 用户可以进入的目录的设置生效

# systemctl restart sshdsftp

步骤二:创建 /etc/ssh/authorized_keys 目录

2.1 进入 /etc/ssh/ 目录

# cd /etc/ssh/

2.2 创建 /etc/ssh/authorized_keys 目录

# mkdir authorized_keys

2.3 更改 /etc/ssh/authorized_keys 目录的所属主和所属组

# chown root:root authorized_keys

2.4 更改 /etc/ssh/authorized_keys 目录的权限

# chmod 755 authorized_keys

步骤三:创建 /etc/ssh/authorized_keys/<user>/ 目录

3.1 进入 /etc/ssh/authorized_keys 目录

# cd authorized_keys

3.2 创建 /etc/ssh/authorized_keys/<user>/ 目录

# mkdir sftpuser

3.3 更改 /etc/ssh/authorized_keys/<user>/ 目录的所属主和所属组

# chown sftpuser:sftpuser sftpuser

3.4 更改 /etc/ssh/authorized_keys/<user>/ 目录的权限

# chmod 755 sftpuser

步骤四:创建 /etc/ssh/authorized_keys/<user>/.ssh 目录

4.1 进入家目录

# cd <user name>

4.2 创建 /etc/ssh/authorized_keys/<user>/.ssh 目录

# mkdir .ssh

4.3 更改 /etc/ssh/authorized_keys/<user>/.ssh 目录的所属主和所属组

# chown sftpuser:sftpuser .ssh

(补充:这里用户名是 sftpuser 主组名是 sftpuser 为例)

4.4 更改 /etc/ssh/authorized_keys/<user>/.ssh 目录的权限

# chmod 700 .ssh

步骤五:创建 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件

5.1 进入 /etc/ssh/authorized_keys/<user>/.ssh 目录

# cd .ssh

5.2 创建 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件

# touch authorized_keys

5.3 更改 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件的所属主和所属组

# chown sftpuser:sftpuser authorized_keys

(补充:这里用户名是 sftpuser 主组名是 sftpuser 为例)

5.4 更改 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件的权限

# chmod 600 authorized_keys

(补充:在本文步骤二中的 authorized_keys 文件也可以通过使用 ssh-copy-id 命令创建以后拷贝到 /etc/ssh/authorized_keys/<user>/.ssh/ 目录下)

步骤六:复制 SSH 公钥

# vi authorized_keys

将 SSH 公匙复制于此

(步骤略)

(补充:在本文步骤五和步骤六中 authorized_keys 文件也可以通过以 ssh-copy-id 命令创建以后拷贝到 /etc/ssh/authorized_keys/<user>/.ssh/ 目录下)

参考文献:

https://access.redhat.com/solutions/3787571