Linux 7.5 SSH服務和SFTP服務分離

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

SFTP是使用加密傳輸認證信息傳輸數據,因此SFTP是很是安全的。linux

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

1、肯定服務器SFTP可用

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

 

 

 

 若SFTP未開啓,經過命令systemctl start sshd開啓centos

SFTP服務關閉命令爲:systemctl stop sshd安全

2、分離SSH和SFTP服務

系統內開啓ssh服務和sftp服務都是經過/usr/sbin/sshd這個後臺程序監聽22端口,而sftp服務做爲一個子服務,是經過/etc/ssh/sshd_config配置文件中的Subsystem實現的,若是沒有配置Subsystem參數,則系統是不能進行sftp訪問的。服務器

         具體操做以下:ssh

2.1 複製SSH相關文件,做爲sftp的配置文件

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

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

 

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

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

 

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

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

 

四、    對service和rcsftpd進行軟鏈接

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

 

五、    對sshd和sftpd進行軟鏈接

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

 

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

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

 

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

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

 

 

  

2.2    修改複製好的配置文件

一、    修改/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

 

二、    修改/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行內容。

 

 

 

 

 

 

  

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

# > /var/run/sftpd.pid

         將內容刪掉

 

四、    添加sftp的專用帳戶

useradd  sftpuser

passwd  sftpuser

usermod  -s  /bin/false sftpuser

 

五、    禁用selinux

setenforce 0

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

 

六、    重啓sftpd服務

systemctl daemon-reload

systemctl start sftpd

 

 

 

 

3、測試SFTP

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

 

 

 

 

 

 

鏈接成功

原文出處:https://www.cnblogs.com/qinyl/p/12194105.html

相關文章
相關標籤/搜索