Как ограничить доступ ssh только для локального хоста?

Мне нужно запретить доступ ssh (кроме localhost) для указанного пользователя.

Так. ssh localhost должен работать. ssh hostname извне не должно работать для этого пользователя.

Все остальные пользователи должны работать как обычно.

См. Директивы AllowUsers и DenyUsers на странице руководства sshd_config (и, возможно, также AllowGroups и DenyGroups ).

В основном эти директивы принимают список пользовательских шаблонов в формате user@host , разделенных пробелами. Директивы имеют следующий приоритет: DenyUsers , AllowUsers , DenyGroups и, наконец, AllowGroups .

Для простого случая, когда только конкретный пользователь может использовать localhost , следует добавить только следующую строку:

 AllowUsers user@localhost 

Это неявно лишает любого пользователя нигде, не являющегося user@localhost .

Как насчет принудительной аутентификации открытого ключа для конкретного пользователя, а затем ограничивает его открытый ключ параметром from= в файле авторизованных ключей.

Чтобы заставить конкретного пользователя использовать аутентификацию с открытым ключом:

 Match User Bad_User PasswordAuthentication no AuthorizedKeysFile /somewhere/the/user/cannot/touch 

А затем в файле авторизованных ключей сконфигурируйте свой ключ следующим образом:

 from=localhost ssh-rsa AAAA... 

Вы можете узнать больше о директивах соответствия в man sshd_config и о разрешенных параметрах ключей в man sshd .

Вы можете использовать PAM (UsePAM в sshd_config) и добавить

 account required pam_access.so 

к конфигурации PAM для ssh.

Затем вы можете определить политики доступа в /etc/security/access.conf

 + : john : 127.0.0.1 ::1 - : john : ALL + : ALL : ALL 

(Непроверенные)