2012-06-06 6 views
1

Я создал ключевую пару (общедоступную и закрытую) и скопировал через открытый ключ на удаленный сервер ssh-copy-id открытый ключ и отключил пароль на основе входа. Теперь я могу ssh в машину, не предоставляя кодовую фразу.понимание входа ssh с использованием PKI

Я искал информацию об обмене протоколом или сообщениями, которые могут произойти по случаю, когда я схожу на удаленную машину, которую я просматривал, но не смог найти статьи, которые описывают, как именно идентификация подтверждается в таком ситуация. Я понимаю PKI и Diffie-Hellman на очень высоком уровне, но я не могу получить общую картину о том, что именно происходит, что я ssh в удаленной машине.

Может ли кто-нибудь объяснить/связать меня со статьями, которые делают то же самое? Благодаря!

+1

Несомненно, это все в RFC (ых)? – EJP

+0

уверен, спасибо, rfc4252, похоже, один –

ответ

2

Из RFC:

С помощью этого метода, обладание секретного ключа служит аутентификации. Этот метод работает путем отправки подписи, созданной с помощью закрытого ключа пользователя. Сервер ДОЛЖЕН проверить, что ключ является действительным аутентификатором для пользователя и ДОЛЖЕН проверить, что подпись действительна. Если оба удержаться, запрос аутентификации ДОЛЖЕН быть принят; в противном случае он ДОЛЖЕН быть отклонен. Обратите внимание, что сервер может потребовать от дополнительных аутентификаций после успешной аутентификации.

Если вы используете verbose на ssh, вы можете увидеть, клиент предлагает сообщение о входе в систему, подписанное вашим личным ключом. Если вы используете несколько ключей, они будут отправлять их по одному. Сервер проверяет, действительна ли подпись с помощью открытого ключа. Если подпись действительна и открытый ключ известен серверу, он предоставит доступ. Если нет, ваш клиент попробует следующий или если ни один не останется, он откажет в доступе.

+0

Спасибо! Под подписью вы имеете в виду цифровую подпись (подписанный открытый ключ)? –

+1

Я предлагаю сервер посылает ключ, подписанный пользователем, но я не могу это проверить. И да, я имею в виду цифровую подпись. – Oliver

+0

Нет, в первую очередь сервер проверяет, настроен ли открытый ключ для данного пользователя. Затем подпись состоит из следующих данных: 'string session identifier, byte SSH_MSG_USERAUTH_REQUEST, имя пользователя строки ...', где идентификатор сеанса, вероятно, является уникальным данным, необходимым для протокола ответа на запрос. Подпись создается с использованием закрытого ключа на клиенте и проверяется открытым ключом на сервере. –