开发者

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

开发者 https://www.devze.com 2024-08-10 12:39 出处:网络 作者: zeng_dd
目录一、部署sftp服务1、创建用户组2、创建用户testsftp3、指定sftp的家目录4、配置ssh服务5、设定Chroot目录权限6、重启sshd服务二、设置免密登录1、在需要连接sftp的服务器上执行2、在部署sftp服务器上总结网上的一
目录
  • 一、部署sftp服务
    • 1、创建用户组
    • 2、创建用户testsftp
    • 3、指定sftp的家目录
    • 4、配置ssh服务
    • 5、设定Chroot目录权限
    • 6、重启sshd服务
  • 二、设置免密登录
    • 1、在需要连接sftp的服务器上执行
    • 2、在部署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组的用户,如果有多个组,用逗号分隔。也可以javascript使用"Match U编程ser 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 群体的使用者 rooandroidt
    chown root:sftp /opt/sftp
    chmod 755 /opt/sftp
    

    6、重启sshd服务

    systjavascriptemctl 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/用户js/.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,进行直接进行登录了。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号