2

У меня есть компьютер (назовем его A) за NAT, и мне нужно SSH-подключение к нему с другого компьютера (назовем его B).

Я видел, что мне нужен обратный туннель SSH, я пытался, и это работает.

Чтобы заставить работать обратный туннель, мне нужно было добавить открытый ключ A в файл authorized_keys ключей B.

Проблема в том, что (из соображений безопасности) я не хочу, чтобы компьютер A мог подключаться по ssh к компьютеру B и просматривать / изменять файлы в нем (A является своего рода рабом B).

Можно ли этого избежать?

1 ответ1

0

компьютер (назовем его A) […] другой компьютер (назовем его B). […] Мне нужно было добавить открытый ключ A в файл authorized_keys ключей B.

Распространенной ситуацией является добавление открытого ключа конкретного пользователя A в файл auhorized_keys конкретного пользователя B. Это не ключ, представляющий весь компьютер A; Аналогично файл authorized_keys не принадлежит к целому B.

Вы , наверное , добавил открытый ключ некоторого пользователя alpha А в файле authorized_keys некоторого пользователя beta - B (два пользователя могут использовать один и тот же логин, они все еще находятся на разных машинах, так что давайте поддерживать различные имена alpha и beta

Мое решение: установите для beta оболочки входа в систему B значение /bin/false . Вы можете сделать это (на B) с помощью sudo usermod -s /bin/false beta .

Это приведет к следующим ограничениям:

  • beta не может вообще войти в B вообще; в частности, ssh beta@B от A никому не даст оболочки, несмотря на успех аутентификации SSH;
  • такие команды, как ssh beta@B whatever что не получится;
  • ни SCP, ни SFTP, пытающиеся получить доступ к учетной записи beta - версии , не будут работать (см. этот комментарий).

Похоже, что у alpha нет возможности увидеть или изменить файлы в B. Однако в то же время:

  • любой, кто может авторизоваться как beta может использовать ssh -N для установки SSH-соединения с B без выполнения каких-либо команд; это пример команды alpha должна вызываться на A:

    ssh -N -R 1234:127.0.0.1:22 beta@B
    
  • вам не нужно быть beta чтобы использовать туннель (хотя -R без указания адреса привязки будет связываться только с интерфейсом обратной связи B, поэтому вы должны быть на B, чтобы использовать туннель; см. также man 5 sshd_config, GatewayPorts опция).

Дополнительно проверьте параметры MaxSessions и PermitOpen в man 5 sshd_config. Я думаю, что если вы используете их правильно, то возможный злоумышленник, использующий секретный ключ alpha , не сможет "перехватить" слишком много портов на B.

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