Я работаю с двумя серверами, оба из которых работают под управлением FreeBSD 8.4-RELEASE-p1 и OpenSSH_6.1p1. Файлы ssh_config
обоих серверов, расположенные в /etc/ssh
, идентичны. Оба сервера настроены так, чтобы пользователи могли удаленно входить в jailed окружение с помощью SSH.
В качестве теста я вошел в тюрьму тестового пользователя с помощью SSH ключей на обоих серверах, используя следующую команду:
ssh -i ~/.ssh/private_key test-user@server.mydomain.com hello
А файл authorized_keys
в обоих случаях определяет следующую команду, которая должна быть запущена после аутентификации, дополненную открытым ключом (разрешения одинаковы на обоих серверах):
command="~/test.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Где test. sh
просто выполняет следующую операцию:
#!/bin/sh
echo SSH_ORIGINAL_COMMAND = $SSH_ORIGINAL_COMMAND
На одном сервере вывод из вышеупомянутого sh
скрипта показывает следующее:
SSH_ORIGINAL_COMMAND = hello
Но на другом сервере результат, похоже, не сохраняется в SSH_ORIGINAL_COMMAND
SSH_ORIGINAL_COMMAND =
Поведение одинаково для соответствующего сервера для каждого пользовательского джейла. Мой вопрос в том, какая еще конфигурация мне нужна, чтобы позволить переменной SSH_ORIGINAL_COMMAND
быть установленной после аутентификации в случае второго сервера?
Посмотрите в /etc/profile и другие сценарии инициализации (~/.bashrc и т.д.) — это некоторые вещи, которые устанавливают переменные среды.
Помните, что вам нужен «.» вместо скриптов, если вы хотите, чтобы их настройки среды, которые они установили, «приклеивались».