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


    为什么用sftp而不是ftp?

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

    需求说明

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

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

    3. sftp用户使用密钥登陆

    如何实现呢?

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

    1. # 创建一个sftpuser用户组
    2. groupadd sftpuser
    3. # 查看用户组
    4. groups sftpuser
    5. # 此目录及上级目录的所有者必须为root,权限不高于755,此目录的组最好设定为sftpuser
    6. mkdir /data/sftpuser
    7. chown -R root:sftpuser /data/sftpuser
    8. chmod -R 0755 /data/sftpuser

     2. 修改sshd_config配置

    1. #备份配置文件
    2. cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
    3. #修改端口为2222
    4. sed -i 's/#Port 22$/Port 2222/' /etc/ssh/sshd_config
    5. # 修改如下的配置,没有的就添加
    6. vim /etc/ssh/sshd_config
    7. # 注释这行
    8. # Subsystem sftp /usr/libexec/openssh/sftp-server
    9. Protocol 2
    10. # 密码认证方式
    11. PasswordAuthentication yes
    12. # 密钥认证方式
    13. PubkeyAuthentication yes
    14. RSAAuthentication yes
    15. Subsystem sftp internal-sftp -l info -f auth
    16. Match group sftpuser
    17. Chrootdirectory /data/sftpuser/%u
    18. Allowtcpforwarding no
    19. X11Forwarding no
    20. 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 

    1. # 创建一个目录并授权
    2. mkdir /data/sftpuser/test
    3. chmod 0755 /data/sftpuser/test
    4. chown root:sftpuser /data/sftpuser/test
    5. # 添加用户,参数-s /sbin/nologin禁止用户通过命令行登录
    6. useradd -g sftpuser -s /sbin/nologin test

    2)创建密钥

    1. # 在用户家目录下创建.ssh目录
    2. mkdir /home/test/.ssh
    3. # root用户生成公钥 私钥 直接回车即可
    4. ssh-keygen -t rsa
    5. # 拷贝公钥到用户家目录下
    6. cp /root/.ssh/id_rsa.pub /home/test/.ssh/authorized_keys
    7. # 给目录授权
    8. chown -R test.sftpuser /home/test

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

    1. # 创建目录upload
    2. mkdir /data/sftpuser/test/upload
    3. # 给目录授权
    4. chown -R test:sftpuser /data/sftpuser/test/upload

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

    4)测试验证

    1. # 重启sshd服务
    2. systemctl restart sshd
    3. # sftp命令行本机测试,用私钥免密登陆
    4. sftp -oPort=2222 -oIdentityFile=~/.ssh/id_rsa test@192.168.100.100
    5. # 在其他机器上使用私钥登陆,需要将私钥文件下载,权限600

     

     

  • 相关阅读:
    MyEclipse技术深度剖析——企业级的Java EE & Jakarta EE IDE
    AWS 高管外流,竟是 MongoDB “撬墙角”?
    微信小程序点击icon实现分享功能
    【MySQL】MySQL主从复制
    Paddle炼丹炉炸了Unexpected BUS error encountered in DataLoader worker
    Golang sync.Map 原理(两个map实现 读写分离、适用读多写少场景)
    运筹说 第75期 | 数学家欧拉也玩跨界
    5-2 Pytorch中的模型层layers
    docker安装RabbitMQ和延时插件
    题目 1058: 二级C语言-求偶数和
  • 原文地址:https://blog.csdn.net/qq_34777982/article/details/134413485