CentOS 7 免密密钥登陆sftp服务 —— 筑梦之路

为什么用sftp而不是ftp?

sftp是使用ssh协议安全加密的文件传输协议,ftp在很多时候都是使用的明文传输,相对来说容易被抓包,存在安全隐患。

需求说明

1. 使用sftp代替ftp来做文件存储,锁定目录,不允许用户切换到未授权的目录

2. 不允许sftp用户ssh登陆到服务器执行操作

3. sftp用户使用密钥登陆

如何实现呢?

1. 创建sftpuser用户组和根目录

# 创建一个sftpuser用户组

groupadd sftpuser

# 查看用户组

groups  sftpuser

# 此目录及上级目录的所有者必须为root,权限不高于755,此目录的组最好设定为sftpuser

mkdir /data/sftpuser

chown -R root:sftpuser /data/sftpuser

chmod -R 0755 /data/sftpuser

 2. 修改sshd_config配置

#备份配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak     

#修改端口为2222
sed -i 's/#Port 22$/Port 2222/' /etc/ssh/sshd_config
 
# 修改如下的配置,没有的就添加
vim /etc/ssh/sshd_config

# 注释这行
# Subsystem sftp /usr/libexec/openssh/sftp-server
Protocol 2
# 密码认证方式
PasswordAuthentication yes
# 密钥认证方式
PubkeyAuthentication yes
RSAAuthentication yes
Subsystem sftp internal-sftp -l info -f auth
Match group sftpuser
Chrootdirectory /data/sftpuser/%u
Allowtcpforwarding no
X11Forwarding no
Forcecommand internal-sftp -l info -f auth

# 凡是在用户组sftpuser里的用户,都可以使用sftp服务;使用sftp服务连接上之后,可访问目录为/data/sftpuser/username

3. 使用实例

 # 举例说明

# test是一个sftpuser组的用户,它通过sftp连接服务器上之后,只能看到/data/sftpuser/test目录下的内容

# test2也是一个sftpuser组的用户,它通过sftp连接服务器之后,只能看到/data/sftpuser/test2目录下的内容

1)创建用户和目录

test目录的所有者必须是root,组最好设定为sftp,权限不高于755 

# 创建一个目录并授权
mkdir /data/sftpuser/test
chmod 0755 /data/sftpuser/test
chown root:sftpuser /data/sftpuser/test

# 添加用户,参数-s /sbin/nologin禁止用户通过命令行登录
useradd -g sftpuser -s /sbin/nologin test 

2)创建密钥

# 在用户家目录下创建.ssh目录
mkdir /home/test/.ssh

# root用户生成公钥 私钥 直接回车即可 
ssh-keygen -t rsa

# 拷贝公钥到用户家目录下
cp /root/.ssh/id_rsa.pub /home/test/.ssh/authorized_keys

# 给目录授权
chown -R test.sftpuser /home/test

 3)在test目录下创建可以写的upload目录

# 创建目录upload
mkdir /data/sftpuser/test/upload

# 给目录授权
chown -R test:sftpuser /data/sftpuser/test/upload

注意:sftp服务的根目录的所有者必须是root,权限不能超过755(上级目录也必须遵循此规则),sftp的用户目录所有者也必须是root,且最高权限不能超过755 

4)测试验证

# 重启sshd服务

systemctl restart sshd

# sftp命令行本机测试,用私钥免密登陆

sftp -oPort=2222 -oIdentityFile=~/.ssh/id_rsa [email protected]

# 在其他机器上使用私钥登陆,需要将私钥文件下载,权限600

猜你喜欢

转载自blog.csdn.net/qq_34777982/article/details/134413485