新聞中心
SFTP 意思是“安全文件傳輸協(xié)議Secure File Transfer Protocol” 或 “SSH 文件傳輸協(xié)議SSH File Transfer Protocol”,它是最常用的用于通過(guò) ssh 將文件從本地系統(tǒng)安全地傳輸?shù)竭h(yuǎn)程服務(wù)器的方法,反之亦然。sftp 的主要優(yōu)點(diǎn)是,除 openssh-server 之外,我們不需要安裝任何額外的軟件包,在大多數(shù)的 Linux 發(fā)行版中,openssh-server 軟件包是默認(rèn)安裝的一部分。sftp 的另外一個(gè)好處是,我們可以允許用戶(hù)使用 sftp ,而不允許使用 ssh 。

創(chuàng)新互聯(lián)自成立以來(lái),一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開(kāi)發(fā)等基于互聯(lián)網(wǎng)的全面整合營(yíng)銷(xiāo)服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開(kāi)發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開(kāi)發(fā)工程師團(tuán)隊(duì)及專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。
當(dāng)前發(fā)布的 Debian 10 代號(hào)為 ‘Buster’,在這篇文章中,我們將演示如何在 Debian 10 系統(tǒng)中在 “監(jiān)獄式的” Chroot 環(huán)境中配置 sftp。在這里,Chroot 監(jiān)獄式環(huán)境意味著,用戶(hù)不能超出各自的家目錄,或者用戶(hù)不能從各自的家目錄更改目錄。下面實(shí)驗(yàn)的詳細(xì)情況:
- OS = Debian 10
- IP 地址 = 192.168.56.151
讓我們跳轉(zhuǎn)到 SFTP 配置步驟,
步驟 1、使用 groupadd 命令給 sftp 創(chuàng)建一個(gè)組
打開(kāi)終端,使用下面的 groupadd 命令創(chuàng)建一個(gè)名為的 sftp_users 組:
root@linuxtechi:~# groupadd sftp_users
步驟 2、添加用戶(hù)到組 sftp_users 并設(shè)置權(quán)限
假設(shè)你想創(chuàng)建新的用戶(hù),并且想添加該用戶(hù)到 sftp_users 組中,那么運(yùn)行下面的命令,
語(yǔ)法:
# useradd -m -G sftp_users <用戶(hù)名>
讓我們假設(shè)用戶(hù)名是 jonathan:
root@linuxtechi:~# useradd -m -G sftp_users jonathan
使用下面的 chpasswd 命令設(shè)置密碼:
root@linuxtechi:~# echo "jonathan:<輸入密碼>" | chpasswd
假設(shè)你想添加現(xiàn)有的用戶(hù)到 sftp_users 組中,那么運(yùn)行下面的 usermod 命令,讓我們假設(shè)已經(jīng)存在的用戶(hù)名稱(chēng)是 chris:
root@linuxtechi:~# usermod -G sftp_users chris
現(xiàn)在設(shè)置用戶(hù)所需的權(quán)限:
root@linuxtechi:~# chown root /home/jonathan /home/chris/
在各用戶(hù)的家目錄中都創(chuàng)建一個(gè)上傳目錄,并設(shè)置正確地所有權(quán):
root@linuxtechi:~# mkdir /home/jonathan/upload
root@linuxtechi:~# mkdir /home/chris/upload
root@linuxtechi:~# chown jonathan /home/jonathan/upload
root@linuxtechi:~# chown chris /home/chris/upload
注意: 像 Jonathan 和 Chris 之類(lèi)的用戶(hù)可以從他們的本地系統(tǒng)上傳文件和目錄。
步驟 3、編輯 sftp 配置文件 /etc/ssh/sshd_config
正如我們已經(jīng)陳述的,sftp 操作是通過(guò) ssh 完成的,所以它的配置文件是 /etc/ssh/sshd_config,在做任何更改前,我建議首先備份文件,然后再編輯該文件,接下來(lái)添加下面的內(nèi)容:
root@linuxtechi:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org
root@linuxtechi:~# vim /etc/ssh/sshd_config
......
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
......
保存并退出文件。
為使上述更改生效,使用下面的 systemctl 命令來(lái)重新啟動(dòng) ssh 服務(wù):
root@linuxtechi:~# systemctl restart sshd
在上面的 sshd_config 文件中,我們已經(jīng)注釋掉了以 Subsystem 開(kāi)頭的行,并添加了新的條目 Subsystem sftp internal-sftp 和新的行。而
Match Group sftp_users –> 它意味著如果用戶(hù)是 sftp_users 組中的一員,那么將應(yīng)用下面提到的規(guī)則到這個(gè)條目。
ChrootDierctory %h –> 它意味著用戶(hù)只能在他們自己各自的家目錄中更改目錄,而不能超出他們各自的家目錄?;蛘邠Q句話(huà)說(shuō),我們可以說(shuō)用戶(hù)是不允許更改目錄的。他們將在他們的目錄中獲得監(jiān)獄一樣的環(huán)境,并且不能訪(fǎng)問(wèn)其他用戶(hù)的目錄和系統(tǒng)的目錄。
ForceCommand internal-sftp –> 它意味著用戶(hù)僅被限制到只能使用 sftp 命令。
步驟 4、測(cè)試和驗(yàn)證 sftp
登錄到你的 sftp 服務(wù)器的同一個(gè)網(wǎng)絡(luò)上的任何其它的 Linux 系統(tǒng),然后通過(guò)我們放入 sftp_users 組中的用戶(hù)來(lái)嘗試 ssh 和 sftp 服務(wù)。
[root@linuxtechi ~]# ssh root@linuxtechi
root@linuxtechi's password:
Write failed: Broken pipe
[root@linuxtechi ~]# ssh root@linuxtechi
root@linuxtechi's password:
Write failed: Broken pipe
[root@linuxtechi ~]#
以上操作證實(shí)用戶(hù)不允許 ssh ,現(xiàn)在使用下面的命令嘗試 sftp:
[root@linuxtechi ~]# sftp root@linuxtechi
root@linuxtechi's password:
Connected to 192.168.56.151.
sftp> ls -l
drwxr-xr-x 2 root 1001 4096 Sep 14 07:52 debian10-pkgs
-rw-r--r-- 1 root 1001 155 Sep 14 07:52 devops-actions.txt
drwxr-xr-x 2 1001 1002 4096 Sep 14 08:29 upload
讓我們使用 sftp 的 get 命令來(lái)嘗試下載一個(gè)文件:
sftp> get devops-actions.txt
Fetching /devops-actions.txt to devops-actions.txt
/devops-actions.txt 100% 155 0.2KB/s 00:00
sftp>
sftp> cd /etc
Couldn't stat remote file: No such file or directory
sftp> cd /root
Couldn't stat remote file: No such file or directory
sftp>
上面的輸出證實(shí)我們能從我們的 sftp 服務(wù)器下載文件到本地機(jī)器,除此之外,我們也必須測(cè)試用戶(hù)不能更改目錄。
讓我們?cè)?upload 目錄下嘗試上傳一個(gè)文件:
sftp> cd upload/
sftp> put metricbeat-7.3.1-amd64.deb
Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb
metricbeat-7.3.1-amd64.deb 100% 38MB 38.4MB/s 00:01
sftp> ls -l
-rw-r--r-- 1 1001 1002 40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb
sftp>
這證實(shí)我們已經(jīng)成功地從我們的本地系統(tǒng)上傳一個(gè)文件到 sftp 服務(wù)中。
現(xiàn)在使用 winscp 工具來(lái)測(cè)試 sftp 服務(wù),輸入 sftp 服務(wù)器 IP 地址和用戶(hù)的憑證:
在 “Login” 上單擊,然后嘗試下載和上傳文件:
現(xiàn)在,在 upload 文件夾中嘗試上傳文件:
上面的窗口證實(shí)上傳是完好地工作的,這就是這篇文章的全部。如果這些步驟能幫助你在 Debian 10 中使用 chroot 環(huán)境配置 SFTP 服務(wù)器s,那么請(qǐng)分享你的反饋和評(píng)論。
新聞名稱(chēng):如何在Debian10中配置Chroot環(huán)境的SFTP服務(wù)
網(wǎng)址分享:http://m.5511xx.com/article/dpohgep.html


咨詢(xún)
建站咨詢(xún)
