У меня два сервера с CentOS6 и CentOS7.
У обоих есть доступ по SSH. На моем клиентском компьютере установлена Ubuntu 16.04.
Для CentOS6 я могу войти с помощью команды
ssh -i ~/.ssh/serv1 root@serv1
но командовать
ssh root@serv1
запрашивает пароль. Это нормально для меня.
Для CentOS7 я могу войти с помощью команды
ssh -i ~/.ssh/serv2 root@serv2
но командовать
ssh root@serv2
НЕ запрашивает пароль. Я тоже могу войти в систему.
Когда я делаю ssh root @ serv2 с другого компьютера, ssh запрашивает пароли, это нормально.
Возникает вопрос: почему я могу войти в serv2 без пароля и без ключа ssh с помощью команды
ssh -i ~/.ssh/serv2 root@serv2
?
Я не могу найти ответственный за это вариант и не могу найти это стандартное поведение для CentOS7.
Скажите, нужна ли дополнительная информация.
Это потому, что ваша личность (открытый ключ) добавлена в качестве авторизованного ключа на serv2 в /root/.ssh/authorized_keys
. Видеть man sshd
раздел AUTHORIZED_KEYS FILE FORMAT
для получения дополнительной информации об этом файле.
Ваша личность по умолчанию хранится в ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_rsa, id_ed25519
файлы и аналогичные файлы с расширением .pub, в которых хранятся соответствующие открытые ключи. Когда вы пытаетесь войти в любой удаленный ssh без указания опции -i, они предлагаются удаленному серверу. Если на удаленном сервере есть какие-либо из них, хранящиеся под их ~/.ssh/authorized_keys
затем вы можете войти в систему с этим ключом (т.е. без пароля). Потому что на основе пароля и на основе открытого ключа - это два разных метода авторизации удаленного пользователя.
Когда вы указываете опцию «-i», вы просто представляете другой открытый ключ, хранящийся в этом файле.
Также вы всегда можете запустить ssh с параметром -v, чтобы получить более подробную информацию о том, какой метод ключа / открытый ключ был принят удаленным устройством. Как в этом примере:
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/nstorm/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering ECDSA public key: /home/nstorm/.ssh/id_ecdsa
debug1: Server accepts key: pkalg ecdsa-sha2-nistp256 blen 104
debug1: Authentication succeeded (publickey).
Authenticated to 172.16.2.1 ([172.16.2.1]:22).
Если вы не хотите входить в систему на serv2 без пароля, если вы не установили нестандартную идентификацию с помощью опции '-i', вам необходимо удалить вашу идентификацию по умолчанию, хранящуюся на serv2, в /root/.ssh/authorized_keys
. Это должна быть та же строка, что и у вашего местного ~/.ssh/id_*.pub
ключ.