
我試圖讓某人透過 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
您發布的行有任何明顯的錯誤。這裡似乎有三種可能性:
- 確實沒有什麼問題,但
sshd
需要開始。 sshd
能夠運行,但它沒有偵聽正確的 IP 位址或連接埠。- 有東西阻止
sshd
啟動。
對於以下所有操作,您必須位於root
ssh 伺服器主機上。
對於 (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
將與您的終端保持連接並列印一堆偵錯資訊。如果由於某種原因它無法繼續運行,它應該告訴您原因。