Как позволить пользователю ssh использование пароля, только если он использует локальную сеть?

Все пользователи должны только войти в ключи использования только кроме John, он может войти в ключи использования и если он использует локальную сеть 192.168.1.x затем он мог ssh использование пароля, но он не может сделать входа в систему с помощью пароля от случайного дюйм/с.

Я не знаю, как записать правило для Джона. Сделайте я делаю AllowUsers john@192.168.1.x ? Но как отклонить John от другого дюйм/с? Что происходит, если John соединил использование другого порта?

Что лучший способ состоит в том, чтобы сделать это?

1
задан 8 April 2018 в 19:17

1 ответ

Необходимо смочь сделать это с a Match директива.

Перед запуском удостоверьтесь, что у Вас есть по крайней мере одна учетная запись с рабочим основанным на ключе доступом к серверу (или физическим доступом).

Затем отредактируйте сервер /etc/ssh/sshd_config файл, добавляя Ваш блок соответствия в конце, например.

Match User john Address 192.168.1.0/24
    PasswordAuthentication yes

Обратите внимание, что это выражает два условия, User john и Address 192.168.1.0/24, оба из которых должны быть удовлетворены для PasswordAuthentication yes быть примененным. 0/24 нотация CIDR для любого адреса в 192.168.1.x подсеть.

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

# Change to no to disable tunnelled clear text passwords

и изменение значения по умолчанию

#PasswordAuthentication yes

кому:

PasswordAuthentication no

Наконец, перезапустите сервис - для systemd базирующиеся init системы, можно сделать то использование

sudo systemctl restart ssh.service

Можно протестировать то несоответствие, которое пользователи больше не могут аутентифицировать пароли использования, вынуждая клиент попробовать, например.

$ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no steeldriver@192.168.1.11

который должен перестать работать с сообщением как

Permission denied (publickey).

тогда как john должен быть запрошен пароль:

$ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no john@192.168.1.11
john@192.168.1.11's password: 
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-116-generic x86_64)

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

2
ответ дан 7 December 2019 в 13:25

Другие вопросы по тегам:

Похожие вопросы: