我总是发现当我ssh进入新机器时收到此消息:
12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53
Run Code Online (Sandbox Code Playgroud)
它代表什么?每台机器每次都会有相同的指纹吗?
这些指纹是如何产生的?它们依赖什么参数?
Ben*_*kes 212
您可以使用ssh-keygen如下方式为公钥生成指纹:
ssh-keygen -lf /path/to/key.pub
Run Code Online (Sandbox Code Playgroud)
具体示例(如果您使用 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)
Run Code Online (Sandbox Code Playgroud)
第一部分(2048)是以比特为单位的密钥长度,第二部分(00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)是公钥的指纹,第三部分是公钥文件本身的位置。
在较新版本的 OpenSSH 中,显示的是 Base64 编码的 SHA-256,而不是十六进制 MD5。要显示旧样式哈希,请使用
$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
mad*_*aze 96
指纹基于主机的公钥,通常基于“/etc/ssh/ssh_host_rsa_key.pub”,通常用于轻松识别/验证您正在连接的主机。
如果指纹发生变化,则您所连接的机器已更改其公钥。这可能不是一件坏事(发生在重新安装 ssh 时),但它也可能表明您正在连接到同一域/IP 上的另一台机器(发生在您通过诸如负载均衡器之类的东西进行连接时)或者您正在成为中间人攻击的目标,其中攻击者以某种方式拦截/重新路由您的 ssh 连接以连接到可能正在窥探您的用户/密码的不同主机。
底线:如果您收到更改指纹的警告,请小心并仔细检查您是否确实通过安全连接连接到正确的主机。尽管大多数情况下这是无害的,但它可能表明存在潜在问题
请参阅:http
: //www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html和:http : //en.wikipedia.org/ wiki/Public_key_fingerprint
and*_*w.n 81
指纹是 Base64 编码公钥中二进制数据上的 MD5。
$ 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
Run Code Online (Sandbox Code Playgroud)
md5sum 6530389635564f6464e8e3a47d593e19 是生成密钥时显示的指纹,只是没有分隔冒号。
但是,如果您正在处理 Amazon 在 EC2 Key Pairs 控制台中显示的指纹,不幸的是, 这可能是另一回事。如果是 32 位十六进制字符串,则是上面的标准 MD5 SSH 公钥指纹。但如果它是 40 个十六进制数字,它实际上是通过采用PKCS#8 格式的私钥的 SHA1 计算出的指纹:
$ 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
Run Code Online (Sandbox Code Playgroud)
Bru*_*sky 30
如果您想检查 SSH 密钥文件以查看它是否与 github 报告的“部署密钥”相同,这是给您的...
从私有 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)
Run Code Online (Sandbox Code Playgroud)
您会注意到私钥和公钥的指纹相同。
相同的命令可以与 GitHub 的一个简洁功能结合使用,即它们在 https://github.com/<username>.keys 上公开提供用户的 SSH 公钥
这是您可以用来利用它的单线。
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
312820 次 |
| 最近记录: |