Как я могу перенаправить пользователей SSH на другой SSH-вход?

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

В идеале, когда они будут входить в систему, они будут перенаправлены на другой SSH-вход и не будут иметь другой доступный вариант для чего-либо еще.

У пользователей SSH нет прав root.

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

1
задан 18 July 2015 в 19:02

3 ответа

Вы решили отредактировать файл bashrc. Я хотел бы взглянуть на ограничение их доступа ко всем командам bash, кроме ssh, таким образом, они могут. У этой ссылки есть хорошая информация.

Еще одна мысль - настроить ssh-проход через туннель без доступа к логину. Эта ссылка может быть полезна. Это может быть проще настроить.

2
ответ дан 23 May 2018 в 18:58
  • 1
    Я не знал о директиве ForceCommand в sshd_config, как указано в @muru. Я рекомендую решение муру выше. – Carl Trask 18 July 2015 в 06:40

Просто установите оболочку входа пользователя в сценарий оболочки вместо bash или sh, содержащий синтаксис ssh во вторую конечную точку. Все логины, если они явно не определяют оболочку с -s в синтаксисе ssh, будут перенаправляться по вашему запросу.

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

Локальный пользовательский сигн, чтобы они не могли вывести Ctrl + C и проверить на выходе из ssh для кода выхода 0, иначе завершить полностью или повторить попытку на неопределенный срок. Ваш выбор.

2
ответ дан 23 May 2018 в 18:58

Вы можете сделать это несколько прозрачно, заставляя пользователя использовать локальный ProxyCommand локально, рассматривая ваш собственный сервер как хост-бастион SSH.

На вашем сервере (бастионе) ограничьте пользователя nc, как показано в sshd_config:

Match User restricted_usr
  ForceCommand nc -w 600 restricted_usr_vm 22

На клиенте (предполагается OpenSSH) в ~/.ssh/config:

Host myserver
  ProxyCommand ssh bastion nc -w 600 restricted_usr_vm 22

(пользователи Windows могут [d1 ] bastion host , используя PuTTY plink).

Хотя, благодаря вашему ForceCommand, я уверен, что команда ssh игнорируется; ProxyCommand ssh bastion I am a bannana должен иметь тот же эффект. Прямое соединение (отсутствует ProxyCommand) от пользователя приведет к необработанному дампу SSH для limited_usr_vm.

Как отмечено в комментарии к другому ответу здесь, ForceCommand будет очень сложно управлять SSH ключ доступа к бастионному хосту. Я могу подумать о двух простых решениях: (1) Установите для SSS-ключа без пароля SSH для этого пользователя на бастионе, который предоставляет доступ к целевому хосту, и у него есть crontab этого пользователя на bastion run scp restricted_usr_vm:.ssh/authorized_keys ~/.ssh/ или (2) Создайте веб-форму (например, GitHub), чтобы разрешить загрузку этого файла. (3) NFS также может работать, но я не очень люблю его, потому что каталог .ssh может быть скомпрометирован кем-то с root (или тем же UID) в любой системе, которая его монтирует.

Я отправил комментарий к другому ответу здесь (с более подробной информацией о ProxyCommand) на очень похожий вопрос ServerFault Имя пользователя SSH proxy.

Мне это нравится намного лучше, чем ForceCommand ssh -t restricted_usr_vm, потому что он лучше справляется с тайм-аутами, а ssh -t является довольно неуклюжим (и, возможно, в прошлом, иногда ненадежным). Я также предполагаю, что такие вещи, как scp, не будут работать через этот метод, пока они отлично работают через ProxyCommand.

0
ответ дан 23 May 2018 в 18:58

Другие вопросы по тегам:

Похожие вопросы: