sftp和ssh分离 的搭建方式


Sftp是安全文献传输协议,本身没有守护进程,包含在ssh,端口也默认为22号端口。

如想分离搭建,需要添加一个sftpd单独的守护进程 用来监听sftp服务。

 

以下以创建sftp用户组,添加psbc用户,登录路径在opt/file/psbc  为例,具体步骤如下:

 

 

1. 创建一个用户组 命名为sftp

 

Groupadd sftp

 

 

 

2. 创建一个用户

 

#用户名psbc 密码psbc

 

useradd -g sftp -s /bin/false psbc

 

passwd psbc

 

 

 

3. 修改用户所在文件夹

 

sftp组用户 统一放到 opt/file下,再按照用户名区分

 

 

 

 

 

mkdir -p /opt/file/psbc  #添加文件夹

 

usermod -d /opt/file/psbc psbc   #将用户psbc登录目录换为 /opt/file/psbc

 

 

 

 

 

4.开始添加一个sftpd单独的守护进程 用来监听sftp服务

 

 

 

4.1  拷贝/usr/lib/systemd/system/目录下的sshd.service文件,放到/etc/systemd/system/目录下,命名为:sftpd.service

 

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

 

 

 

4.2  拷贝/etc/pam.d/目录下的sshd文件,放到同目录,命名为:sftpd

 

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

 

 

 

4.3 拷贝/etc/ssh/目录下的sshd_config文件,放到同目录,命名为:sftpd_config

 

cp /etc/ssh/sshd_config  /etc/ssh/sftpd_config

 

 

 

4.4 service和rcsftpd进行软连接

 

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

 

 

 

4.5 sshd和sftpd进行软连接

 

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

 

 

 

4.6 拷贝/etc/sysconfig/目录下的sshd文件,放到同目录,命名为:sftp

 

cp /etc/sysconfig/sshd  /etc/sysconfig/sftp

 

 

 

4.7 拷贝/var/run/目录下的sshd.pid文件,放到同目录,命名为:sftpd.pid

 

cp /var/run/sshd.pid  /var/run/sftpd.pid

 

 

 

5.修改复制好的配置文件

 

 

 

5.1修改/etc/systemd/system/目录下sftpd.service文件

 

 

 

vim /etc/systemd/system/sftpd.service

 

 

 

修改为下图圈红部分:

 

  

 

5.2 修改/etc/ssh/目录下的sftpd_config文件

vim /etc/ssh/sftpd_config

 

(1)首先修改端口号 第十七行端口号改为想分离的端口

 

 

 

(2)其次修改 拒绝root用户登录

 

 

 

 

 

#PermitRootLogin yes

改成 

PermitRootLogin no

就是取消该行的注释,并将yes改成no

 

 

(3)修改PidFile路径:

 

 

 

#PidFile /var/run/sshd.pid

改成

PidFile /var/run/sftpd.pid

就是取消该行的注释,并将sshd.pid改成sftpd.pid

 

(4) 开通sftp服务 添加sftp用户组 并设置根目录

 

 

注释

#Subsystem  sftp  /usr/libexec/openssh/sftp-server并添以下6

Subsystem sftp internal-sftp

Match Group sftp                   #这行是添加sftp用户组

ChrootDirectory /opt/file/%u    #添加用户登录根目录,此目录上级的目录不可访问

                                #这里%u 指的是用户名的意思

X11Forwarding no

 

AllowTcpForwarding no

ForceCommand internal-sftp

 

6.清空/var/run/目录下的sftpd.pid文件内容

> /var/run/sftpd.pid

 

7.设定Chroot目录权限  

#上面配置的ChrootDirectory目录,往上的路径,所属用户必须为root,用户组只有读权限

chown root:sftp /opt/file   

chmod 755 /opt/file 

 

chown root:sftp /opt/file/psbc

chmod 755 /opt/file/psbc

 

8.建立SFTP用户登入后可写入的目录

#照上面设置后,在重启sshd服务后,用户psbc已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个upload目录供psbc上传文件。

 

#这个目录所有者为psbc,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:

 

mkdir /opt/file/psbc/upload

chown psbc:sftp /opt/file/psbc/upload

chmod 755 /opt/file/psbc/upload

 

9.修改/etc/selinux/config

 

vi /etc/selinux/config  

#将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。

#输入命令

setenforce 0  

 

 

10、重启sshd服务及sftpd

#输入命令重启服务。

service sshd restart

service sftpd start  

 

 

一、测试访问sftp服务器

 

Sftpftp不同,不能在浏览器上直接访问,需要专用连接工具

 

1. 在其他服务器上尝试连接:

# sftp -oPort=5022 psbc@ ip地址

 

 

 

 

2.通过专用软件(fileZilla)连接

 

 

 

 
   

 

 

二、搭建失败常见问题:

一些错误问题: Connection reset by peer

 

 

 

这个是要求自sftp文件夹之上的组都没有写入权限 路径以上文件夹权限为(drwxr -xr -x)

且文件夹所属用户root

 

 

 

三、搭建好的添加新用户

无需改动配置 只需要添加sftp用户 配置好文件夹即可

 

例子:

 

#添加用户abc

useradd -g sftp -s /bin/false abc

 

#添加abc文件夹 设置为abc用户初始登录文件夹

mkdir /opt/file/abc

usermod -d /opt/file/abc abc

 

# 改变读写权限

chown root:sftp /opt/file/abc

chmod 755  /opt/file/abc

 

#建立可供abc读写权限的文件夹upload

mkdir /opt/file/abc/upload

chown abc:sftp /opt/file/abc/upload

chmod 755  /opt/file/abc/upload

 

# 重启sftpd服务

systemctl start sftpd.service

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM