
Возможно ли (и если да, то как) сделать следующее openssh-server
:
- иметь возможность аутентифицировать
root
пользователя с помощью ключа и без пароля - иметь возможность аутентифицировать
non-root
пользователя с помощью ключа и без пароля - чтобы предотвратить
non-root
вход пользователя в системуroot
с использованием его/ее собственного ключа - сделать это с одним экземпляром
sshd
, используя только одинTCP port
И да, я прекрасно осознаю риски опциона PermitRootLogin yes
.
решение1
Это должно работать «из коробки» и не требует ничего, кроме помещения открытых ключей пользователей в файл .ssh/authorized_keys для соответствующего пользователя на сервере. (Если этот файл для пользователя не существует, создайте его!)
Единственное, о чем следует знать, это то, что если открытый ключ пользователя, не являющегося root, добавлен в файл root/.ssh/authorized_keys сервера, то этот пользователь, не являющийся root, сможет войти на сервер как пользователь root. Поэтому, чтобы избежать этого, просто не добавляйте его ключ в файл root authorized_keys.
Вы уже сталкивались с PermitRootLogin - который, конечно, должен быть включен на сервере. Вы можете (по желанию) ограничить, кто и откуда может входить в систему (если вообще может), добавив строку типа "AllowUsers[email protected] [email protected]«user2» — который разрешит вход только root и user1 с определенного IP-адреса, но user2 может войти в систему откуда угодно. Вы можете расширить это с помощью необходимого количества комбинаций user/ip.