允許使用 chroot 目錄的 SFTP 和 SSH
我正在嘗試設置具有 SFTP 訪問權限和有限 SSH 訪問權限的使用者。因此,我已經對使用者進行了 chroot,然後基本上完全按照本教程中的說明進行了設置。但是,雖然我可以成功通過 ssh 連接到伺服器,但當我嘗試通過 SFTP 連接進行連接時,它只是顯示連接失敗。
研究和嘗試修復
我試圖搜尋任何可以解釋如何做到這一點的東西,但是我只能找到這個沒有任何答案的主題。此外,我在網上找不到任何文章來說明如何做到這一點。
我還嘗試將
/bin
整個/lib
文件夾複製到 chrooted 目錄中,以確保沒有任何失去的命令可能導致它失敗。查看/var/log/auth.log
沒有產生任何結果,包括因為唯一的日誌是使用者關閉了連接,包括我LogLevel Debug2
在/etc/ssh/sshd_config
. 嘗試使用 WinSCP 中的 SCP 連接進行連接允許我查看文件,但是我無法將任何內容複製到本地驅動器,反之亦然SSHD 配置文件(相關部分):
Match User test_user ChrootDirectory /home/test_user
最終,我發現了這個
jailkit
工具,它旨在自動化使用者的監禁,而不是我最初試圖做的手動操作。要設置 chrooted 目錄,我使用了以下步驟
安裝(在 Ubuntu 上) 從原始碼安裝可以在這裡找到
sudo apt install jailkit
目錄設置
可以在 中找到允許訪問的各種包的列表
/etc/jailkit/jk_init.ini
。設置好之後,我也以這種方式安裝了 gitsudo chown root:root /srv/test_user sudo jk_init -v /srv/test_user netutils basicshell jk_lsh openvpn ssh sftp
通用格式如下
sudo chown root:root <chroot_directory> sudo jk_init -v <chroot_directory> <packages>
監禁使用者
sudo jk_jailuser -m -j /srv/test_user test_user
換殼
最後, 中指定的外殼
<chroot_directory>/etc/passwd
應從 更改/usr/sbin/jk_lsh
為/bin/bash
。請注意,應該只有 test_user、root 和可能另一個登錄名的條目從那裡,您可以通過 ssh 或 sftp/scp 登錄並按預期訪問所有內容。請注意,要通過公鑰登錄,您需要設置
~/.ssh/authorized_keys
文件