ssh与sftp分离,附一键分离脚本

2 篇文章 0 订阅

应用场景:相比于ftp,sftp在安全性上要更高,如果需要与其他机器进行数据传输,建议采用sftp,ssh与sftp分离,可以实现单独进行用户控制:限制某些用户只能使用sftp传输,无法ssh登陆,某些用户只能ssh登陆,无法进行sftp传输。同时可以指定ssh与sftp使用不同的端口。

基本思路:复制ssh服务建立单独的sftp服务

说明:下面所用命令测试基于redhat7或centos7版本

一、复制相关文件

cp -p /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service

cp -p /etc/pam.d/sshd  /etc/pam.d/sftpd

cp -p /etc/ssh/sshd_config  /etc/ssh/sftpd_config

ln -sf  /usr/sbin/service  /usr/sbin/rcsftpd

ln -sf  /usr/sbin/sshd  /usr/sbin/sftpd

cp -p /etc/sysconfig/sshd  /etc/sysconfig/sftpd

二、    修改新服务的配置
1、修改/etc/systemd/system/sftpd.service
        vim /etc/systemd/system/sftpd.service
        #第2行
        Description=Sftp server daemon
        #第10行,第11行
        EnvironmentFile=/etc/sysconfig/sftpd
        ExecStart=/usr/sbin/sftpd -f /etc/ssh/sftpd_config
2、修改vim /etc/ssh/sftpd_config
        vim /etc/ssh/sftpd_config
        #第17行
        Port 9999    #根据实际情况修改
        #第125行
        PidFile /var/run/sftpd.pid
        #第141行,注释掉这行
        #Subsystem      sftp    /usr/libexec/openssh/sftp-server

    #最后添加下面这几行
        Subsystem sftp internal-sftp
        Match User sftpuser
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp

三、新增账号并开启服务
    #新增账号
        Useradd -d /app/sftp/ qhsftp
    #修改密码
        passwd  qhsftp
    #设置禁止ssh登陆
        usermod  -s  /bin/false qhsftp
    #修改家目录和权限设置
        chown root /app/sftp    #家目录的属主必须是root, 该家目录的最高可设置权限为755,如果高于该权限,会导致sftp连接不上
        chmod 755 /app/sftp
    #reload daemon
        systemctl daemon-reload
    #开启sftp服务
        systemctl start sftpd
## 如果启动时出现 Bind to port 8822 on :: failed: Permission denied 这种报错,则需要把要添加的sshd服务端口在selinux上注册
查看selinux中sshd当前的端口:semanage port -l | grep ssh
在selinux中添加端口:semanage port -a -t ssh_port_t -p tcp 8822
重启sshd服务
防火墙放行修改后的端口

扩展:
ssh只允许指定的用户登陆(同样适用于sftp)
    方法1:在/etc/pam.d/sshd文件第一行加入
        auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
        然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。
    方法2:pam规则也可以写成deny的
        auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed
    方法3:在sshd_config中设置AllowUsers,格式如
        AllowUsers a b c
    重启sshd服务,则只有a/b/c3个用户可以登陆

按照惯例一键部署脚本已配置好,有需要点下面链接进行下载

https://download.csdn.net/download/ioryhm/13101618

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了将SSHSFTP服务分离,你可以按照以下步骤操作。 首先,找到你的SSH配置文件,通常在/etc/ssh/sshd_config。在这个文件中,你可以找到一个称为Subsystem的行,它指定了使用哪个程序来处理SFTP连接。在第132行,你会找到类似于"Subsystem sftp /usr/libexec/openssh/sftp-server"的内容。 接下来,你需要通过编辑SSHD配置文件来进行设置。通过使用编辑器打开你的SSHD配置文件,找到并修改"Subsystem sftp"行。将其修改为"Subsystem sftp internal-sftp"。这将使SSHD守护进程内部处理SFTP连接,而不是使用单独的sftp-server守护进程。保存并关闭文件。 最后,在修改完SSHD配置文件后,你需要重新加载SSH配置。你可以通过运行"systemctl reload sshd"命令来重新加载。这将使你的更改生效并将SSHSFTP服务分离。 这样,你就成功地将SSHSFTP服务分离了。现在,SSH将继续处理SSH连接,而SSHD守护进程将内部处理SFTP连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SSHSFTP服务分离](https://blog.csdn.net/xx244/article/details/124709735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值