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