非root用户组启动sftp_如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务 | Linux 中国
SFTP 意思是“安全文件傳輸協議(Secure File Transfer Protocol)” 或 “SSH 文件傳輸協議(SSH File Transfer Protocol)”,它是最常用的用于通過?ssh?將文件從本地系統安全地傳輸到遠程服務器的方法,反之亦然。sftp?的主要優點是,除?openssh-server?之外,我們不需要安裝任何額外的軟件包,在大多數的 Linux 發行版中,openssh-server?軟件包是默認安裝的一部分。sftp?的另外一個好處是,我們可以允許用戶使用?sftp?,而不允許使用?ssh?。
當前發布的 Debian 10 代號為 ‘Buster’,在這篇文章中,我們將演示如何在 Debian 10 系統中在 “監獄式的” Chroot 環境中配置?sftp。在這里,Chroot 監獄式環境意味著,用戶不能超出各自的家目錄,或者用戶不能從各自的家目錄更改目錄。下面實驗的詳細情況:
??OS = Debian 10??IP 地址 = 192.168.56.151讓我們跳轉到 SFTP 配置步驟,
步驟 1、使用 groupadd 命令給 sftp 創建一個組
打開終端,使用下面的?groupadd?命令創建一個名為的?sftp_users?組:
root@linuxtechi:~# groupadd sftp_users步驟 2、添加用戶到組 sftp_users 并設置權限
假設你想創建新的用戶,并且想添加該用戶到?sftp_users?組中,那么運行下面的命令,
語法:
# useradd -m -G sftp_users讓我們假設用戶名是?jonathan:
root@linuxtechi:~# useradd -m -G sftp_users jonathan使用下面的?chpasswd?命令設置密碼:
root@linuxtechi:~# echo "jonathan:" | chpasswd假設你想添加現有的用戶到?sftp_users?組中,那么運行下面的?usermod?命令,讓我們假設已經存在的用戶名稱是?chris:
root@linuxtechi:~# usermod -G sftp_users chris現在設置用戶所需的權限:
root@linuxtechi:~# chown root /home/jonathan /home/chris/在各用戶的家目錄中都創建一個上傳目錄,并設置正確地所有權:
root@linuxtechi:~# mkdir /home/jonathan/uploadroot@linuxtechi:~# mkdir /home/chris/uploadroot@linuxtechi:~# chown jonathan /home/jonathan/uploadroot@linuxtechi:~# chown chris /home/chris/upload注意:?像 Jonathan 和 Chris 之類的用戶可以從他們的本地系統上傳文件和目錄。
步驟 3、編輯 sftp 配置文件 /etc/ssh/sshd_config
正如我們已經陳述的,sftp?操作是通過?ssh?完成的,所以它的配置文件是?/etc/ssh/sshd_config,在做任何更改前,我建議首先備份文件,然后再編輯該文件,接下來添加下面的內容:
root@linuxtechi:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-orgroot@linuxtechi:~# vim /etc/ssh/sshd_config......#Subsystem sftp /usr/lib/openssh/sftp-serverSubsystem sftp internal-sftpMatch Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp......保存并退出文件。
為使上述更改生效,使用下面的?systemctl?命令來重新啟動?ssh?服務:
root@linuxtechi:~# systemctl restart sshd在上面的?sshd_config?文件中,我們已經注釋掉了以?Subsystem?開頭的行,并添加了新的條目?Subsystem sftp internal-sftp?和新的行。而
Match Group sftp_users?–> 它意味著如果用戶是?sftp_users?組中的一員,那么將應用下面提到的規則到這個條目。
ChrootDierctory %h?–> 它意味著用戶只能在他們自己各自的家目錄中更改目錄,而不能超出他們各自的家目錄。或者換句話說,我們可以說用戶是不允許更改目錄的。他們將在他們的目錄中獲得監獄一樣的環境,并且不能訪問其他用戶的目錄和系統的目錄。
ForceCommand internal-sftp?–> 它意味著用戶僅被限制到只能使用?sftp?命令。
步驟 4、測試和驗證 sftp
登錄到你的?sftp?服務器的同一個網絡上的任何其它的 Linux 系統,然后通過我們放入?sftp_users?組中的用戶來嘗試 ssh 和 sftp 服務。
[root@linuxtechi ~]# ssh root@linuxtechiroot@linuxtechi's password:Write failed: Broken pipe[root@linuxtechi ~]# ssh root@linuxtechiroot@linuxtechi's password:Write failed: Broken pipe[root@linuxtechi ~]#以上操作證實用戶不允許?ssh?,現在使用下面的命令嘗試?sftp:
[root@linuxtechi ~]# sftp root@linuxtechiroot@linuxtechi's password:Connected to 192.168.56.151.sftp> ls -ldrwxr-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.txtdrwxr-xr-x 2 1001 1002 4096 Sep 14 08:29 upload讓我們使用 sftp 的?get?命令來嘗試下載一個文件:
sftp> get devops-actions.txtFetching /devops-actions.txt to devops-actions.txt/devops-actions.txt 100% 155 0.2KB/s 00:00sftp>sftp> cd /etcCouldn't stat remote file: No such file or directorysftp> cd /rootCouldn't stat remote file: No such file or directorysftp>上面的輸出證實我們能從我們的 sftp 服務器下載文件到本地機器,除此之外,我們也必須測試用戶不能更改目錄。
讓我們在?upload?目錄下嘗試上傳一個文件:
sftp> cd upload/sftp> put metricbeat-7.3.1-amd64.debUploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.debmetricbeat-7.3.1-amd64.deb 100% 38MB 38.4MB/s 00:01sftp> ls -l-rw-r--r-- 1 1001 1002 40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.debsftp>這證實我們已經成功地從我們的本地系統上傳一個文件到 sftp 服務中。
現在使用 winscp 工具來測試 sftp 服務,輸入 sftp 服務器 IP 地址和用戶的憑證:
在 “Login” 上單擊,然后嘗試下載和上傳文件:
現在,在?upload?文件夾中嘗試上傳文件:
上面的窗口證實上傳是完好地工作的,這就是這篇文章的全部。如果這些步驟能幫助你在 Debian 10 中使用 chroot 環境配置 SFTP 服務器s,那么請分享你的反饋和評論。
via:?https://www.linuxtechi.com/configure-sftp-chroot-debian10/
作者:Pradeep Kumar?選題:lujun9972?譯者:robsean?校對:wxy
本文由?LCTT?原創編譯,Linux中國?榮譽推出
總結
以上是生活随笔為你收集整理的非root用户组启动sftp_如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务 | Linux 中国的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高级语言的编译过程和解释过程_进来了解一
- 下一篇: 1t硬盘怎么分区最好_win7系统硬盘怎