Как передать переменные env через ssh пользователю, перенаправляющему на chroot

Мне нужно изолировать некоторых пользователей в chroot-тюрьме, все работает нормально. Но есть последняя оставшаяся проблема: для этих пользователей (перенаправленных в chroot) переменные env, поступающие от клиента ssh, теряются.

Например, мои пользователи отправляют env LANG через свой ssh-клиент, и эта переменная находится в списке AcceptEnv файла sshd_config, но она не передается в пользовательские сеансы с chroot, даже если он отлично работает для не chroot.

Вот мое обновление /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' не разрешена в блоке Match"
  • моя версия sshd: OpenSSH_5.3p1, и я не могу ее обновить.

Есть ли решение для решения этой проблемы?


person Frederic Blanc    schedule 06.01.2016    source источник


Ответы (1)


Вы не можете применить его со стороны сервера, если не хотите добавлять его в глобальную область config. Думал, что есть некоторые возможности:

  • Запустите другую службу на другом порту для пользователей с chroot и добавьте туда AcceptEnv (без совпадения).
  • Решение на стороне клиента, если переменных не так много (может быть псевдоним или функция bash):

    ssh server "MY_SPECIFIC_VARS=$MY_SPECIFIC_VARS bash"
    
  • Как вы заметили, обновление всего сервера (CentOS 6?) имело бы смысл. Текущий openssh поддерживает AcceptEnv в Match блоках.

person Jakuje    schedule 06.01.2016
comment
Я не понимаю, переменные добавляются в глобальную область видимости, в AcceptEnv файла /etc/ssh/sshd_config в любом случае. Что ты имеешь в виду ? Что касается обновления серверов, я бы с удовольствием воспользовался этим решением, если бы ими управлял я, но это не так, и я предвидел их обновление до CentOS 7.0 не раньше, чем через несколько лет :-) - person Frederic Blanc; 07.01.2016
comment
точно так же, как это было в вашем примере конфигурации. Выносим AcceptEnv из блока Match. Он примет эту переменную для всех пользователей, но это не должно иметь значения, не так ли? Также не забывайте, что вам нужно правильно добавить SendEnv в клиентах. - person Jakuje; 07.01.2016