компьютер (назовем его 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.