Мы хотели бы настроить один из ваших RHEL-серверов, чтобы разрешить вход на основе пароля из нашей внутренней сети и запретить использование паролей для внешних входов. Есть идеи, как этого добиться без запуска другого демона? Внутренняя сеть находится на другом интерфейсе, но я не вижу, как настроить SSHd, чтобы различать интерфейсы.
Вам нужна директива Match. Что-то вроде:
PasswordAuthentication no
Match Address 192.168.0.0/16
PasswordAuthentication yes
Прочтите sshd_config (5) для подробностей.
Это ответ на ваш вопрос. Однако, вообще говоря, ключи, вероятно, лучше, чем пароли, по многим причинам, не в последнюю очередь из-за возможности использовать ssh-agent (1). Возможно, вы захотите тщательно обдумать, действительно ли у вас есть веская причина для разрешения паролей.
Я не думаю, что есть способ сделать это с помощью всего одного ssh-сервера. Я думаю, что главный вопрос в том, почему вы хотите это сделать? Есть ли какая-то процедурная причина, по которой вы не можете просто запретить пароли и постоянно использовать открытые ключи?
Один из способов сделать это - запустить два экземпляра sshd на сервере с разными конфигурациями и на разных портах. Используйте iptables, чтобы разрешить доступ к одному серверу на одном интерфейсе, а к одному - на другом. Установите один, чтобы разрешить только пароли, а другой - только открытый ключ.