如何通过ssh将env变量传递给用户重定向到chroot

时间:2016-01-06 13:56:35

标签: ssh chroot sshd

我需要在chroot监狱中隔离一些用户,一切正常。但是还有一个问题:对于这些用户(重定向到chroot),来自ssh客户端的env变量将丢失。

例如,我的用户通过他们的ssh客户端发送env LANG ,此变量位于 sshd_config 文件的 AcceptEnv 列表中, 但它不会传递给chrooted用户会话,即使它非常适合非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 ,我无法升级。

是否有解决此问题的解决方案?

1 个答案:

答案 0 :(得分:0)

如果您不想将其添加到全局配置范围,则无法从服务器端强制执行此操作。以为有一些可能性:

  • 在chrooted用户的不同端口上运行不同的服务,并在那里添加AcceptEnv(不匹配)。
  • 客户端解决方案,如果没有太多变量(可以是bash别名或函数):

    ssh server "MY_SPECIFIC_VARS=$MY_SPECIFIC_VARS bash"
    
  • 正如您所说,整个服务器(CentOS 6?)的更新是有意义的。当前的openssh支持AcceptEnv块中的Match