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/sftpForceCommand 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,进行直接进行登录了。
码云笔记 » Linux系统配置sftp服务及如何实现免密登录
![](https://media.mybj123.com/wp-content/uploads/2024/02/1706962282-d2a91681b352c3a.png)