linux
主页 > 服务器 > linux >

Linux系统配置sftp服务以及实现免密登录方式

2024-06-11 | 佚名 | 点击:

网上的一系列部署总有问题,记录下部署配置成功案例。

 

一、部署sftp服务

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

 

1、创建用户组

1

groupadd sftp

 

2、创建用户testsftp

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

1

useradd -g sftp -s /sbin/nologin testsftp

 

3、指定sftp的家目录

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

1

mkdir -p /opt/sftp

 

4、配置ssh服务

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#这里备份下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

打开密钥登录功能

1

2

RSAAuthentication yes

PubkeyAuthentication yes

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

1

PasswordAuthentication no

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

1

sshd -T

 

5、设定Chroot目录权限

1

2

3

#将文件sftp的拥有者设为 sftp 群体的使用者 root

chown root:sftp /opt/sftp

chmod 755 /opt/sftp

 

6、重启sshd服务

1

systemctl restart sshd

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

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

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

命令如下:

1

2

3

mkdir /opt/sftp/upload

chown sftp:sftp /opt/sftp/upload

chmod 755 /opt/sftp/upload

 

二、设置免密登录

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

 

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

(注意选择好使用用户)

1

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后,执行一下命令:

1

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

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

原文链接:
相关文章
最新更新