Chroot ssh 使用者到主資料夾導致連線被拒絕

Chroot ssh 使用者到主資料夾導致連線被拒絕

我試圖讓某人透過 ssh 存取我擁有的(Ubuntu 14.04)伺服器,但我想將他們限制在他們自己的主資料夾中。所以我試著跟隨本教程

我首先創建了一個使用者 ( sudo adduser jailuser),這使得可以使用監獄使用者登入。然後繼續嘗試監禁用戶,我添加了以下內容/etc/ssh/sshd_config(並重新啟動了 ssh):

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

然後我創建了 sftp 群組:

sudo groupadd sftp

並執行以下命令來更改監獄用戶:

sudo usermod -G sftp jailuser
sudo usermod -s /bin/false jailuser
sudo chown root:root /home/jailuser
sudo chmod 0755 /home/jailuser

結果是我無法再登入了:ssh: connect to host xx.xxx.xx.223 port 22: Connection refused

由於我是伺服器管理的新手,因此我迷失了方向。有人知道我做錯了什麼嗎?歡迎所有提示/技巧!

答案1

我遇到了這個問題,解決方法是將「UsePAM yes」放在「Subsystem sftp internal-sftp」節上方。重新啟動 ssh 就可以了。

答案2

我沒有看到sshd_config您發布的行有任何明顯的錯誤。這裡似乎有三種可能性:

  1. 確實沒有什麼問題,但sshd需要開始。
  2. sshd能夠運行,但它沒有偵聽正確的 IP 位址或連接埠。
  3. 有東西阻止sshd啟動。

對於以下所有操作,您必須位於rootssh 伺服器主機上。

對於 (1),執行「ps -fe | grep sshd」之類的命令來查看是否sshd正在執行。如果沒有,請嘗試啟動 ssh 伺服器。在 Ubuntu 上,您可以執行以下命令:

/etc/init.d/ssh restart

如果sshd正在運行,請繼續執行 (2)。檢查sshd_config是否有監聽地址或者港口指令。這些控制伺服器將偵聽連接的 IP 位址和連接埠。在大多數情況下,您可以將這些註解掉(以使用預設值)或將它們分別設為 0.0.0.0 和 22。

如果您嘗試啟動sshd但它無法運行,請先檢查日誌檔案中/var/log是否有來自 的任何訊息sshd。他們可能會指出它遇到了什麼問題。如果這不起作用,您可以sshd透過調試交互運行:

/usr/sbin/sshd -ddd            # Listen on the default port 22
/usr/sbin/sshd -ddd -p 1022    # Listen on port 1022

sshd將與您的終端保持連接並列印一堆偵錯資訊。如果由於某種原因它無法繼續運行,它應該告訴您原因。

相關內容