2016-01-06 70 views
0

我需要隔離chroot監獄中的一些用戶,所有工作都正常。但是還有一個剩餘的問題:對於這些用戶(重定向到chroot),來自ssh客戶端的env變量會丟失。如何通過SSH將env變量傳遞給用戶重定向到chroot

例如,我的用戶發送的ENV LANG雖然他們的SSH客戶端,這個變量是在的sshd_config文件, 的AcceptEnv列表中,但不傳遞到chroot的用戶會話,甚至如果它適用於非chrooted的。

這裏是我的的/ etc/SSH/sshd_config中更新:

AcceptEnv LANG MY_SPECIFIC_VARS_* 

Match Group chrooted 
    ChrootDirectory /chroot 
    AllowTcpForwarding yes 
    X11Forwarding yes 
    X11DisplayOffset 10 
    X11UseLocalhost yes 
    AllowAgentForwarding yes 
    PermitRootLogin no 

可悲的是:

  • 這個變量不能在你的.ssh/environnements文件中設置的,因爲它被固定在運行。
  • 的「指令‘AcceptEnv’不匹配塊內不允許
  • 我的sshd的版本是:OpenSSH_5.3p1,我不能升級。

有沒有解決此問題的解決方案?

回答

0

如果您不想將其添加到配置的全局範圍,則無法從服務器端強制執行它。以爲有一些可能性:不同端口chroot的用戶在

  • 運行不同的服務,並添加AcceptEnv有(不匹配)。
  • 客戶端的解決方案,如果沒有太多的變量(可以是bash的別名或功能):

    ssh server "MY_SPECIFIC_VARS=$MY_SPECIFIC_VARS bash" 
    
  • 正如你注意到,整個服務器的更新(?CentOS 6的)纔有意義。當前openssh支持Match塊中的AcceptEnv

+0

我不明白,無論如何,變量都會添加到全局範圍的/etc/ssh/sshd_config的AcceptEnv中。 你是什麼意思? 至於服務器的更新,我很樂意使用這個解決方案,如果我是一個管理他們的人,但尼特並不是這種情況,我預見他們更新CentOS 7.0,而不是幾年前:-) –

+0

就像它是在你的示例配置。將'AcceptEnv'放在'Match'區塊之外。它會接受所有用戶的這個變量,但它應該沒關係,不是嗎?另外不要忘記,您需要在客戶端中正確添加'SendEnv'。 – Jakuje

相關問題