Linux系统配置sftp服务及如何实现免密登录

目录
文章目录隐藏
  1. 一、部署 sftp 服务
  2. 二、设置免密登录

Linux 系统配置 sftp 服务及如何实现免密登录
本文主要介绍了 Linux 系统配置 sftp 服务以及如何实现免密登录的方法,因为之前我在网上查到的一系列部署试了一下发现总有问题,所以记录下部署配置成功得案例,纯属个人笔记,也希望对大家有帮助。

一、部署 sftp 服务

本质是 sftp 服务使用 ssh 中的协议,默认端口也跟随 ssh 服务的配置。

1、创建用户组

groupadd sftp

2、创建用户 testsftp

并将用户添加到刚创建的用户组,拒绝用户登录 shell。

useradd -g sftp -s /sbin/nologin testsftp

3、指定 sftp 的家目录

自选任意位置,我这里就新建一个 sftp 的目录为/opt/sftp

mkdir -p /opt/sftp

4、配置 ssh 服务

#这里备份下 sshd_config 配置文件,养成修改前备份的好习惯
cp -rp /etc/ssh/sshd_config /etc/ssh/sshd_config-bak
#打开/etc/ssh/sshd_config,并搜索 Subsystem 字符位置,然后注释
vim +/Subsystem /etc/ssh/sshd_config
#行首加#注释掉
#Subsystem      sftp    /usr/libexec/openssh/sftp-server

########################################################
#然后追加配置
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /opt/sftp
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no
  • Match Group sftp:匹配 sftp 组的用户,如果有多个组,用逗号分隔。也可以使用”Match User mysftp”匹配用户,多个用户之间也是用逗号分隔。
  • ChrootDirectory /opt/sftp:将用户的根目录指定到/opt/sftp
  • ForceCommand internal-sftp:指定 sftp 命令。
  • X11Forwarding no:是否允许用户可以使用端口转发。

打开密钥登录功能:

RSAAuthentication yes
PubkeyAuthentication yes

可以禁用密码方式登录(根据自身实际需求设置):

PasswordAuthentication no

保存退出。然后检验 sshd 配置,如有错,根据错误提示修正:

sshd -T

5、设定 Chroot 目录权限

#将文件 sftp 的拥有者设为 sftp 群体的使用者 root
chown root:sftp /opt/sftp
chmod 755 /opt/sftp

6、重启 sshd 服务

systemctl restart sshd

照上面设置后,在重启 sshd 服务后,用户 sftp 已经可以登录(只能使用 sftp 登录,使用 ssh 登录不了)。

但使用 chroot 指定根目录后,根应该是无法写入的,所以要新建一个目录供 sftp 上传文件。

这个目录所有者为 sftp,所有组为 sftp,所有者有写入权限,而所有组无写入权限。

命令如下:

mkdir /opt/sftp/upload
chown sftp:sftp /opt/sftp/upload
chmod 755 /opt/sftp/upload

二、设置免密登录

本质是将需要登录的服务器的公钥数据加载到需要免密登录的服务器的 authorized_keys 文件中。【实际是配置 ssh 免密】

1、在需要连接 sftp 的服务器上执行

注意:选择好使用用户。

ssh-keygen -t rsa

回车两次生成 rsa 公私钥文件,可打开/home/用户/.ssh/文件夹查看,复制 id_rsa.pub 内容准备。

2、在部署 sftp 服务器上

cd 到用户 sftp 的账户家目录,新建用户默认家用户路径在/home/用户名。

新建一个.ssh 文件夹,在.ssh 文件夹内新建名为 authorized_keys 的文件,将复制过来的 id_rsa.pub 中的内容增加到 authorized_keys 文件中。

此处注意,

需要更改.ssh 和 authorized_keys 的 owner 和 group,因为 sftp 用户只支持 sftp 协议,所以需要在 root 账户下创建.ssh 和 authorized_keys 后,执行一下命令:

chown -R sftp:sftp /sftp/sftp_upload/.ssh

接下来就可以 sftp sftp@sftp 服务器 IP,进行直接进行登录了。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » Linux系统配置sftp服务及如何实现免密登录

发表回复