2015-02-23 80 views
0

我的目標是讓這些東西工作:在chroot的環境中使用兩個SFTP和端口轉發SSH

  • 用戶可以通過SFTP連接到服務器。他只能從他的家目錄中讀取內容(因此,他可以使用SFTP用戶@主機
  • 用戶可以連接到服務器,並打開一個遠程端口的端口轉發(因此,他可以使用SSH -R REMOTE_PORT:本地主機:端口用戶@主機
  • 用戶可以而不是做任何事情,但除了這兩件事。他不應該有正常的shell訪問權限,並且不應該能夠運行命令。

我可以讓任何一種情況下工作,但不是在同一時間。

我的/ etc/sshd_config的是:

Match Group restricted 
    ChrootDirectory /home/restricted/users 
    AllowAgentForwarding no 
    X11Forwarding no 
    AllowTcpForwarding yes 
    ForceCommand internal-sftp 

顯然,這是SFTP的工作情況。使用此配置,不可能打開遠程端口進行端口轉發。

對目前我允許TCP轉發禁用ChrootDirectory指令的唯一方法ForceCommand和。

此外,我必須將shell更改爲/ bin/bash以允許端口轉發。

我的夢想情況是:

  • /斌/假(或同等學歷)爲殼
  • chroot的主目錄
  • SFTP工作
  • 端口轉發工作
  • 沒有別的作品

這甚至可能嗎?如果是這樣,我需要做什麼?

在此先感謝。

+0

此網站用於編程問題,而不是服務器配置。 – 2015-02-23 21:11:04

+0

您可以在使用Paramiko或類似庫編寫的自定義SSH服務器中實現此功能。在這個開發工作中你遇到的問題可能在這裏討論。:) – 2015-02-23 21:41:15

+0

(具體來說,Paramiko的Python版本; Java端口不支持SFTP服務器)。 – 2015-02-23 21:41:49

回答

2

感謝Charles Duffy,我知道我做錯了什麼。上述配置確實確實是工作,但是,我有一個「-N」添加到我的ssh客戶端的請求:

ssh -N -R remote_port:localhost:port [email protected] 

但這也與shell設置爲/ bin工作/假

對不起關於選擇錯誤的部分,下次我將嘗試unix.stackexchange。

再次感謝!