Как я могу заблокировать свою учетную запись от удаленного входа в SSH с паролем?

10

Я не хочу вообще отключать удаленный вход с паролем, но я хочу сделать так, чтобы моя учетная запись была доступна только при аутентификации пары ключей (есть другие пользователи, которые хотят использовать пароли для входа в систему). Можно ли изменить это для каждого пользователя, в идеале без изменения системных настроек?

И чтобы было ясно, моя учетная запись имеет доступ sudo, поэтому я не хочу блокировать пароль.

phunehehe
источник

Ответы:

9

Вы можете использовать опцию Match в sshd_config

Соответствие Вводит условный блок. Если все критерии в строке соответствия удовлетворены, ключевые слова в следующих строках переопределяют те, которые установлены в глобальном разделе файла конфигурации, до другой строки соответствия или конца файла. [1]

Итак, в конце этого файла вы можете указать:

Match User yourusername
PasswordAuthentication no

Смотрите man 5 sshd_configдля всех доступных вариантов.

[1] http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5

jasonwryan
источник
Это уже хорошо, но я хочу посмотреть, смогу ли я обойтись без редактирования sshd_config.
phunehehe
2
Учитывая, что вы хотите внести системное изменение, то есть такое , которое не повлияет на других пользователей, это маловероятно ...
jasonwryan
а как насчет ~ / .ssh / config? Вы пробовали включить там настройки?
ttyS0
1
AFAK ~ / .ssh / config для клиента, а не для сервера.
Адам Быртек
1

Ответ от jasonwryan будет правильный способ сделать это изменение. Единственное добавление, которое я хотел бы сделать, состоит в том, что вы можете установить соответствие на основе группы, так что любой пользователь в группе колеса должен будет использовать аутентификацию по ключу, а другие могут использовать пароли.

Я знаю, что вы хотите сделать это без изменения системных конфигурационных файлов, но есть веская причина, почему это будет невозможно. В вашей голове есть смысл, чтобы ваш пользователь мог установить более безопасную политику входа в систему, но только потому, что, по вашему мнению, это более безопасный вариант, это не меняет того факта, что он все еще является изменением требований входа в систему для удаленный пользователь.

Чтобы понять, почему это проблема, представьте сценарий наоборот. Системный администратор (который может изменять файлы конфигурации системы) устанавливает систему только для входа в систему на основе ключей. Затем какой-то пользователь приходит и получает доступ только к своему собственному пользовательскому файлу и устанавливает свою учетную запись, чтобы разрешить аутентификацию по паролю, переопределяя системную политику. BEEEEEEP . Проблема безопасности!

Это объясняет, почему изменения, которые вы хотите сделать, возможны только из системного конфигурационного файла?

Калеб
источник
Сложно так думать, так как, если бы я был обычным пользователем, который не использует sudo, я мог бы с радостью настроить свои ключи, а затем заблокировать пароль, таким образом делая мою учетную запись «аутентификацией только по ключу».
phunehehe
С другой стороны, я мог заблокировать свой пароль каждый раз, когда я собираюсь выйти из системы, что должно запретить вход в систему для всех паролей моей учетной записи. Затем, как только я вошел в систему с моими ключами, я мог бы снова включить пароль для sudo. Очевидно, что это не очень хорошее решение, но оно заставляет меня думать, что это возможно.
phunehehe
1
Вы можете сделать это только потому, что системный администратор разрешил аутентификацию по ключу, а вы только добавляете ограничения для себя, ничего не меняя. Отключение вашего пароля просто устанавливает его в неверное значение, оно не меняет аутентификацию, которую разрешает системный демон.
Калеб
«добавление ограничений для себя, ничего не меняя», это именно то, что я хочу сделать.
phunehehe
@Caleb: не было бы проблем с безопасностью, если бы разрешить authorized_keysустанавливать больше ограничений, как этого хочет phunehehe. Например, authorized_keysможно ограничить определенные ключи определенными командами.
Жиль "ТАК - перестань быть злым"
0

Добавляя ограничения для себя, ничего не меняя

Почему бы не на стороне клиента, если он уверен, что ssh будет клиентом, который будет использоваться для попыток входа в систему? Если да, попробуйте внести изменения в ssh_config вместо sshd_config. Проверьте параметр «PasswordAuthentication No» и PreferredAuthentications

Никхил Мулли
источник