Linux 7.5 SSH服務和SFTP服務分離


SFTP是SSH的一部分,SFTP沒有單獨的守護進程,它必須使用SSHD守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像是一個服務器程序,而更像是一個客戶端程序。

SFTP是使用加密傳輸認證信息傳輸數據,所以SFTP是非常安全的。

本手冊是在centos7.5系統上進行編寫,理論上支持centos7.0以上版本

一、確定服務器SFTP可用

使用Xshell工具連接SFTP服務器,輸入systemctl status sshd,查看結果如下,表示機器SFTP已打開且可用

 

 

 

 若SFTP未開啟,通過命令systemctl start sshd開啟

SFTP服務關閉命令為:systemctl stop sshd

二、分離SSH和SFTP服務

系統內開啟ssh服務和sftp服務都是通過/usr/sbin/sshd這個后台程序監聽22端口,而sftp服務作為一個子服務,是通過/etc/ssh/sshd_config配置文件中的Subsystem實現的,如果沒有配置Subsystem參數,則系統是不能進行sftp訪問的。

         具體操作如下:

2.1 復制SSH相關文件,作為sftp的配置文件

1、    拷貝/usr/lib/systemd/system/目錄下的sshd.service文件,放到/etc/systemd/system/目錄下,命名為:sftpd.service

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

 

2、    拷貝/etc/pam.d/目錄下的sshd文件,放到同目錄,命名為:sftpd

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

 

3、    拷貝/etc/ssh/目錄下的sshd_config文件,放到同目錄,命名為:sftpd_config

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

 

4、    對service和rcsftpd進行軟連接

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

 

5、    對sshd和sftpd進行軟連接

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

 

6、    拷貝/etc/sysconfig/目錄下的sshd文件,放到同目錄,命名為:sftp

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

 

7、    拷貝/var/run/目錄下的sshd.pid文件,放到同目錄,命名為:sftpd.pid

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

 

 

  

2.2    修改復制好的配置文件

1、    修改/etc/systemd/system/目錄下sftpd.service文件

vim /etc/systemd/system/sftpd.service

 

 

 

 

修改圖中圈紅部分:

[Unit]

Description=sftpd server daemon

Documentation=man:sshd(8) man:sshd_config(5)

After=network.target sshd-keygen.service

Wants=sshd-keygen.service

[Service]

Type=notify

EnvironmentFile=/etc/sysconfig/sftp

ExecStart=/usr/sbin/sftpd -f /etc/ssh/sftpd_config

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=42s

[Install]

WantedBy=multi-user.target

 

2、    修改/etc/ssh/目錄下的sftpd_config文件

vim /etc/ssh/sftpd_config

具體修改如下:

①找到第17行,將

Port 22

改成

Port 20022

②找到第38行,將

#PermitRootLogin yes

改成

PermitRootLogin no

就是取消該行的注釋,並將yes改成no,這行參數的目的是拒絕root用戶登錄

 

③找到116行,將

#PidFile /var/run/sshd.pid

改成

PidFile /var/run/sftpd.pid

就是取消該行的注釋,並將sshd.pid改成sftpd.pid

 

④找到第132行,將

Subsystem  sftp  /usr/libexec/openssh/sftp-server

注釋

#Subsystem  sftp  /usr/libexec/openssh/sftp-server並添以下5行

Subsystem sftp internal-sftp

Match User sftpuser

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

就是注釋132行,並將132行下面,添加5行內容。

 

 

 

 

 

 

  

3、    清空/var/run/目錄下的sftpd.pid文件內容

# > /var/run/sftpd.pid

         將內容刪掉

 

4、    添加sftp的專用賬戶

useradd  sftpuser

passwd  sftpuser

usermod  -s  /bin/false sftpuser

 

5、    禁用selinux

setenforce 0

sed -i "s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config

 

6、    重啟sftpd服務

systemctl daemon-reload

systemctl start sftpd

 

 

 

 

三、測試SFTP

使用xftp軟件,連接修改好的服務器,通過新建的用戶和端口連接

 

 

 

 

 

 

連接成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM