Через четыре года этот ответ заслуживает обновления. Хотя изначально я использовал authorized_keys
себя и, вероятно, использовал бы его в некоторых избранных случаях, вы также можете использовать sshd_config
файл конфигурации центрального сервера.
sshd_config
Вы можете назначить (для вашего конкретного случая использования) группу, например, proxy-only
или Match
отдельных пользователей. В sshd_config
. Это делается после глобальных настроек и отменяет, повторяет или уточняет некоторые настройки, заданные в глобальных настройках.
Примечание: некоторые из используемых синтаксисов / директив sshd_config(5)
задокументированы на man
странице ssh_config(5)
. В частности, обязательно прочитайте раздел УЗОРЫssh_config(5)
.
Для группы это означает, что ваш Match
блок начнется так:
Match group proxy-only
Вы можете Match
следующие критерии: User
, Group
, Host
, LocalAddress
, LocalPort
и Address
. Чтобы соответствовать нескольким критериям, просто разделите запятыми пары критериев-шаблонов (см. group proxy-only
Выше).
Внутри такого блока, который традиционно используется для краткости (но не обязательно), вы можете затем объявить настройки, которые вы хотите применить для группы пользователей, без необходимости редактировать каждый отдельный authorized_keys
файл для членов этой группы.
no-pty
Установка от authorized_keys
будет зеркально на PermitTTY no
месте и command="/sbin/nologin"
стал бы ForceCommand /sbin/nologin
.
Кроме того, вы также можете установить дополнительные параметры, чтобы удовлетворить паранойю администратора, например chroot
-ввести пользователя в его домашнюю папку и в итоге получится что-то вроде этого:
Match group proxy-only
PermitTTY no
ForceCommand /sbin/nologin
ChrootDirectory %h
# Optionally enable these by un-commenting the needed line
# AllowTcpForwarding no
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
(проверьте, нужны ли вам закомментированные строки и, если необходимо, раскомментируйте)
Это %h
токен, который заменяется домашним каталогом пользователя ( %u
будет содержать имя пользователя и %%
знак процента). Я нашел ChrootDirectory
особенно полезным ограничить моих sftp-only
пользователей:
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Обратите внимание, что в блоке могут использоваться только определенные директивы Match
. Обратитесь к man
странице sshd_config(5)
для деталей (поиск Match
).
authorized_keys
NB: часть под этим замечанием была моим первоначальным ответом. Между тем - но это также зависит от особенностей вашей точной sshd
версии - я бы пошел на метод, описанный выше в большинстве случаев.
Да, вы можете так детально, как вы можете назначить открытые ключи. В дополнение к nologin, как рекомендовано ajdecon, я бы предложил установить следующее перед ключевой записью в authorized_keys
:
no-pty ssh-rsa ...
Параметр no pty сообщает стороне сервера, что для этого ключа не должен быть выделен псевдотерминал.
Вы также можете принудительно выполнить что-то вроде nologin для определенного ключа, добавив следующее:
command="/sbin/nologin",no-pty ssh-rsa ...
no-pty
само по себе это не помешает пользователю ключа выполнить команды. См. Superuser.com/q/1230979/195460 .