SFTP搭建與安裝
1.SFTP簡介
? ? ? ? sftp是ssh的一部分,sftp沒有單獨(dú)的守護(hù)進(jìn)程,其必須使用sshd守護(hù)進(jìn)程(默認(rèn)端口為22)進(jìn)行相應(yīng)的連接操作攘宙。
2.分離SSH和SFTP服務(wù)
? ? ? ?系統(tǒng)內(nèi)開啟ssh服務(wù)和sftp服務(wù)都是通過/usr/sbin/sshd這個后臺程序監(jiān)聽22端口床嫌,而sftp服務(wù)作為一個子服務(wù)蹋辅,是通過/etc/ssh/sshd_config配置文件中的Subsystem實現(xiàn)的悴势,如果沒有配置Subsystem參數(shù),則系統(tǒng)是不能進(jìn)行sftp訪問措伐。
1.復(fù)制ssh文件重名為sftp的文件
#復(fù)制/usr/lib/systemd/system/sshd.service為/etc/systemd/system/sftpd.service
[root@lv ~]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service
#復(fù)制/etc/pam.d/sshd為/etc/pam.d/sftpd
[root@lv ~]# cp /etc/pam.d/sshd /etc/pam.d/sftpd
#復(fù)制/etc/ssh/sshd_config為/etc/ssh/sshd_config
[root@lv ~]# cp /etc/ssh/sshd_config /etc/ssh/sftpd_config
#將sshd與sftpd創(chuàng)建軟鏈接
[root@lv ~]# ln -sf /usr/sbin/sshd /usr/sbin/sftpd
#復(fù)制/etc/sysconfig/sshd為/etc/sysconfig/sftp
[root@lv ~]# cp /etc/sysconfig/sshd /etc/sysconfig/sftp
#復(fù)制/var/run/sshd.pid為/var/run/sftpd.pid特纤,并清空/var/run/sftpd.pid
[root@lv ~]# cp /var/run/sshd.pid /var/run/sftpd.pid[root@lv?~]#?>?/var/run/sftpd.pid
2.修改配置文件
vim /etc/systemd/system/sftpd.service
#刪除sftpd.service內(nèi)容并添加如下內(nèi)容[Unit]Description=sftpd server daemonDocumentation=man:sshd(8) man:sshd_config(5)
After=network.target
sshd-keygen.serviceWants=sshd-keygen.service
[Service]
Type=notifyEnvironmentFile=/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
3.修改sftp配置文件
vim /etc/ssh/sftpd_config
修改Port:Port 22
修改PidFile:PidFile /var/run/sftpd.pid
#注釋
#Subsystem sftp /usr/libexec/openssh/sftp-server
#文件末尾添加如下內(nèi)容
Subsystem sftp internal-sftp
Match Group sftp
ForceCommand internal-sftp
AllowTcpForwarding no
#配置解釋:
Subsystem sftp internal-sftp? ? ?????????????#指定使用sftp服務(wù)使用系統(tǒng)自帶的
internal-sftpMatch Group sftpusers? ? ?#匹配sftp組的用戶,若要匹配多個組,可用逗號分開X11Forwarding no? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#禁止用戶使用端口轉(zhuǎn)發(fā)
AllowTcpForwarding no ???????????????????? #禁止用戶使用端口轉(zhuǎn)發(fā)
ForceCommand internal-sftp ???????????? #只能用于sftp登錄
ChrootDirectory /home/sftp???????????????? #限制用戶的根目錄
4.創(chuàng)建用戶與目錄
#使用root用戶創(chuàng)建用戶組,組名為sftp侥加;創(chuàng)建sftp用戶捧存,用戶名為sftp,并設(shè)置密碼groupadd?sftp
useradd?-g?sftp?-s?/sbin/nologin sftp
passwd?sftp
#使用root用戶新建目錄/data,將其設(shè)置為sftp的home目錄昔穴,并指定目錄權(quán)限
mkdir -p /data
usermod?-d?/data?sftp
#設(shè)置Chroot目錄權(quán)限
chown root:resftp /data
chmod 755 /data
#設(shè)置sftp用戶可以操作的目錄
mkdir?-p?/data/sftp/home
chown?sftp:sftp?/data/sftp/home
chmod 755 /data/sftp/home
5.啟動
#使修改的sshd配置生效
systemctl daemon-reload
#啟動
sftpsystemctl start sftpd????????????????????????????????#啟動sftp