Linux

允許使用 chroot 目錄的 SFTP 和 SSH

  • September 25, 2021

我正在嘗試設置具有 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。設置好之後,我也以這種方式安裝了 git

sudo 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文件

引用自:https://serverfault.com/questions/1078457