Ответы:
Отпечаток пальца основан на открытом ключе хоста, обычно на основе "/etc/ssh/ssh_host_rsa_key.pub". Как правило, для легкой идентификации / проверки хоста, к которому вы подключаетесь.
Если отпечаток пальца изменяется, компьютер, к которому вы подключаетесь, изменил свой открытый ключ. Это может быть не плохо (происходит после переустановки ssh), но это также может указывать на то, что вы подключаетесь к другому компьютеру с тем же доменом / IP (происходит, когда вы подключаетесь через что-то вроде балансировщика нагрузки) или что вы подвергаются атаке «человек посередине», когда злоумышленник каким-то образом перехватывает / перенаправляет ваше ssh-соединение для подключения к другому хосту, который может отслеживать вашего пользователя / pw.
Итог: если вас предупреждают об изменении отпечатка пальца, будьте осторожны и дважды проверьте, действительно ли вы подключаетесь к правильному хосту через безопасное соединение. Хотя в большинстве случаев это безвредно, это может быть признаком потенциальной проблемы.
Смотрите: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
и: http://en.wikipedia.org/ вики / Public_key_fingerprint
~/.ssh/known_hosts
. Таким образом, когда вы подключаетесь к серверу, ваш SSH-клиент распознает этот сервер, поскольку вы сохранили его открытый ключ known_hosts
. Следовательно, на самом деле вы никогда не должны говорить «да», когда клиент SSH говорит вам: «Подлинность хоста не может быть установлена». Вы должны всегда добавлять открытый ключ сервера заранее.
~/.ssh/known_hosts
заранее добавлять открытый ключ сервера в ваш файл и никогда не говорить «да», когда ваш SSH-клиент говорит вам «Подлинность клиента не может быть установлена» или когда он говорит вам «Открытый ключ сервера был измененное».
Вы можете создать отпечаток для открытого ключа, используя ssh-keygen
так:
ssh-keygen -lf /path/to/key.pub
Конкретный пример (если вы используете открытый ключ RSA):
$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)
Первая часть (2048)
- это длина ключа в битах, вторая часть (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)
- это отпечаток открытого ключа, а третья часть - это местоположение самого файла открытого ключа.
ssh-keygen -lf
сделаю что хочешь.
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
. Он показывает отпечаток, который также отображается при входе в систему SSH на localhost.
ssh-keygen
зарегистрированные sha256
отпечатки пальцев. Чтобы получить md5
отпечатки пальцев, я побежал ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
. #archlinux
ssh -o FingerprintHash=md5
или эквивалент в ssh_config
и на вещи, которые используют, ssh
как scp
.
Отпечаток пальца - это MD5 поверх двоичных данных в открытом ключе в кодировке Base64.
$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[ RSA 2048]----+
| +*..+* |
| =. +.= |
| . . .o . |
| o+ E |
| S= . + o |
| . o o + |
| . . |
| |
| |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
| base64 -D | md5
6530389635564f6464e8e3a47d593e19
Md5sum 6530389635564f6464e8e3a47d593e19 - это отпечаток, отображаемый при создании ключа, только без разделительных двоеточий.
Однако, если вы имеете дело с отпечатками пальцев, которые Amazon показывает в консоли пар ключей EC2, к сожалению, это может быть другой зверь . Если это шестнадцатеричная строка из 32 цифр, то это стандартный отпечаток открытого ключа SS5 MD5, указанный выше. Но если это 40 шестнадцатеричных цифр, это на самом деле отпечаток пальца, вычисленный путем взятия SHA1 закрытого ключа в формате PKCS # 8:
$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58
awk '{print $2}' /path/to/keyfile.pub
или аналогичном.
cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum
Если вы хотите проверить файл ключа SSH, чтобы увидеть, совпадает ли он с тем, что github сообщает как «Deploy key», это для вас ...
С частного URL: https://github.com/<username>/<repo_name>/settings/keys вы увидите
На терминале:
$ ls -l id*
-rw------- 1 bruno staff 1675 Mar 29 17:03 id_rsa
-rw-r--r-- 1 bruno staff 416 Mar 29 17:03 id_rsa.pub
$ ssh-keygen -E md5 -lf id_rsa
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)
$ ssh-keygen -E md5 -lf id_rsa.pub
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)
Вы заметите, что вы получаете одинаковые отпечатки как для закрытых, так и для открытых ключей.
Эту же команду можно объединить с удобной функцией GitHub, которая заключается в том, что они публично обслуживают открытые ключи пользователей SSH по адресу https://github.com/<username>.keys.
Вот одна строка, которую вы можете использовать, чтобы воспользоваться ею.
$ curl -sL https://github.com/RichardBronosky.keys | while read; do echo -e "\nkey #$((++i)):"; ssh-keygen -E md5 -lf - <<<"$REPLY"; echo $REPLY; done
key #1:
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJGT35gvsFveu+80qgurrLHId0h55E9jliM7Fo0mV9b7eg3EfyagkAcJUSMFkoov3HY4CW0yzOc7WlN57ABwvpRz1ioFDex0n0FkjoSEs5ROeT1OneRK6Bf6XnplgPuQ/LSSkv3kmK6I29R+YWi6TjDvLLoA5BrXJjOMfUv36jxWCDtk/5ZdhMZqhsMuDm06Jg5JBu6n5jQaZkmaIaunz7vOfwVG9LoCI+MYyIdo2S4VTva7Ee7jfAvgSUUgHTjhzsPO0/Ww5a/Kz2ehXW27aJxj/QPLfYR2LmTMbQKm3WpB8P1LjoiU7zjPoVoZ43a4P2JLUDidGKCd3eY5b5xewz
key #2:
2048 MD5:f7:98:f1:0b:73:c6:2a:21:00:7a:70:1d:0f:cf:d8:cc no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCQsZrjwKjB4WnE4SwVdDX5eEMxKzPHFBVKKpo9vvWUXRQwdTZy6iVOkyF26IPR+xDPzslzXOClKXUrWEh6La/EMpRwuMrWAbMIJFeDHOb56q4azgopoJmMJHo0yxGu0Ts4XszMACYRhlG6uK2AP5SYiOTp1zKPFjazXAdwLXyOvJurzy6KKuGJdSs/sj9+4uehgyRNOhehCSfg71tJJYwRvO2DDfLgaVEKOgZx58gEnJfhhz9D7rbvdZNhw/hCgtVNJaQF9Mdke2OPwWSo8i0/XNb9Bu/GRXqwMZrxDBhyzieocW40cwuzxWfzoi03aISdtQ1HtawH8+/sswviM1+B
ssh-keygen -r host.name.com
Выводит отпечатки пальцев для всех настроенных открытых ключей на экземпляре sshd.
Затем они могут быть помещены в записи DNS SSHFP .