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