4

Используя директиву SSH ProxyCommand в файле клиента ~/.ssh/config , можно подключиться к SSH-серверу через другой SSH-сервер, выполняющий роль хоста перехода.

Есть ли аналогичная конфигурация для SSH-сервера? Например, когда пользователь входит в систему с помощью определенного авторизованного ключа, я хочу, чтобы это SSH-соединение автоматически переадресовывалось на другую машину, на которой также запущен sshd .

2 ответа2

5

Вы можете указать команду, которая выполняется всякий раз, когда кто-то входит в систему, используя ключ ssh.

Отредактируйте файл ~/.ssh/authorized_keys . Перед каждым ключом, который вы хотите переслать, добавьте command=ssh user@target .

Это должно быть сделано для каждого пользователя. Поскольку это делается с помощью файла конфигурации пользователя, каждый пользователь может изменить это. Если вы доверяете своим пользователям (или вы единственный пользователь), тогда это нормально. Вы также можете запретить пользователям изменять это, не предоставляя им никаких других средств для доступа к оболочке на этом компьютере.

Для получения дополнительной информации прочитайте справочную страницу sshd . Найдите раздел AUTHORIZED_KEYS FILE FORMAT , а затем введите command="command" .

Альтернативно: вы можете принудительно ввести команду с помощью ForceCommand в /etc/ssh/sshd_config . Эта опция более безопасна, так как применяется sshd, и только пользователи с правами root могут изменить это.

Для получения дополнительной информации прочитайте справочную страницу sshd_config . Поиск ForceCommand .

1

Самый простой способ - это иметь

ssh -t user@host

в файле пользователя .bash_login, чтобы при входе в систему он просто запускал новый сеанс ssh на удаленной машине. (-T форсирует выделение псевдо-tty - не уверен, нужно ли вам это или нет)

Если вы хотите получить более сложное / централизованное управление, вы можете заменить оболочку пользователя на скрипт / программу, которая выбирает правильный удаленный сервер для подключения и соответственно выполняет команду ssh.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .