Я хочу позволить любому в 192.168.1.0-192.168.1.255
диапазон, чтобы иметь возможность входить в систему с паролем или ключом SSH, но люди вне этого диапазона могут входить только с ключом SSH.
Можно ли этого добиться без более чем одного sshd?
Я использую Ubuntu 9.04.
Это не проверено, но настройка чего-то вроде этого в самом конце sshd_config
должно сработать:
PasswordAuthentication no PubkeyAuthentication yes RSAAuthentication yes Match Address 192.168.1.0/24 PasswordAuthentication yes
По сути, вы глобально разрешаете аутентификацию с открытым ключом, глобально запрещаете аутентификацию по паролю, а затем, в частности, повторно-разрешить аутентификацию по паролю для всех в подсети 192.168.1.0/24.
Изменить: у вас, вероятно, уже есть первые три строки в другом месте вашей конфигурации. Если вы это сделаете, их больше не нужно добавлять. Однако блок «Матч» должен быть в конце файла.
Так же RSAAuthentication
ключевое слово специфично для SSH v1, что вы не разрешаете, верно?
Я думаю, вы можете сделать эту работу, настроив sshd с PAM и Pubkey auth, а затем настроив PAM, чтобы разрешить доступ только из определенных подсетей. Эта уловка работает, потому что sshd ничего не спрашивает PAM об аутентификации на основе ключей.
В / etc / ssh / sshd_config (я думаю, что в Ubuntu это значения по умолчанию) что-то вроде:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
В /etc/pam.d/sshd раскомментируйте строку pam_access (я считаю, что в Ubuntu она присутствует в правильной последовательности, но закомментирована):
account required pam_access.so
В /etc/security/access.conf:
+:ALL:192.168.1.0/24
Примечание: я это вообще не тестировал.
Да, я так думаю. Вы можете использовать директивы AllowUser и MatchUser в файле sshd_config, чтобы настроить директивы конфигурации для каждого пользователя.