Через четыре года этот ответ заслуживает обновления. Хотя изначально я использовал 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 .