Câu trả lời:
Dấu vân tay dựa trên khóa Công khai của Máy chủ, thường dựa trên "/etc/ssh/ssh_host_rsa_key.pub" Nói chung để dễ dàng xác định / xác minh máy chủ bạn đang kết nối.
Nếu dấu vân tay thay đổi, máy bạn đang kết nối đã thay đổi khóa chung của họ. Đây có thể không phải là một điều xấu (xảy ra từ việc cài đặt lại ssh), nhưng nó cũng có thể cho thấy rằng bạn đang kết nối với một máy khác ở cùng một tên miền / IP (xảy ra khi bạn đang kết nối thông qua một cái gì đó như bộ cân bằng tải) hoặc bạn đang bị nhắm mục tiêu với một cuộc tấn công trung gian, trong đó kẻ tấn công bằng cách nào đó chặn / định tuyến lại kết nối ssh của bạn để kết nối với một máy chủ khác có thể rình mò người dùng / pw của bạn.
Điểm mấu chốt: nếu bạn bị cảnh báo về dấu vân tay đã thay đổi, hãy thận trọng và kiểm tra kỹ xem bạn có thực sự kết nối với máy chủ chính xác qua kết nối an toàn không. Mặc dù hầu hết thời gian này là vô hại, nó có thể là một dấu hiệu của một vấn đề tiềm năng
Xem: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-inif.html
và: http://en.wikipedia.org/ wiki / Công_key_fingerprint
~/.ssh/known_hosts
. Bằng cách này, khi bạn kết nối với máy chủ, máy khách SSH của bạn sẽ nhận ra máy chủ này, vì bạn đã lưu khóa công khai của nó vào known_hosts
. Do đó, thực sự bạn không bao giờ nên nói "có" khi ứng dụng khách SSH nói với bạn "Tính xác thực của máy chủ không thể được thiết lập". Bạn phải luôn luôn thêm khóa công khai của máy chủ trước.
~/.ssh/known_hosts
tệp của mình trước và không bao giờ nói có khi máy khách SSH của bạn nói với bạn "Tính xác thực của máy khách không thể được thiết lập" hoặc khi nó cho bạn biết "Khóa chung của máy chủ đã được đã thay đổi ".
Bạn có thể tạo dấu vân tay cho khóa công khai bằng cách sử dụng ssh-keygen
như vậy:
ssh-keygen -lf /path/to/key.pub
Ví dụ cụ thể (nếu bạn sử dụng khóa chung 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)
Phần đầu tiên (2048)
là độ dài khóa tính bằng bit, phần thứ hai (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)
là dấu vân tay của khóa chung và phần thứ ba là vị trí của tệp khóa công khai.
ssh-keygen -lf
sẽ làm những gì bạn muốn.
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
. Nó hiển thị dấu vân tay cũng được hiển thị trên thông tin đăng nhập SSH tới localhost.
ssh-keygen
báo cáo sha256
. Để lấy md5
dấu vân tay tôi đã chạy ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
. #archlinux
ssh -o FingerprintHash=md5
hoặc tương đương trong ssh_config
và trên những thứ sử dụng ssh
như thế nào scp
.
Dấu vân tay là MD5 trên dữ liệu nhị phân trong khóa công khai được mã hóa 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 là dấu vân tay được hiển thị khi khóa được tạo, chỉ không có dấu hai chấm tách biệt.
Tuy nhiên, nếu bạn đang xử lý dấu vân tay mà Amazon hiển thị trong bảng điều khiển Cặp khóa EC2, thật không may , đó có thể là một con thú khác . Nếu đó là chuỗi hex gồm 32 chữ số, đó là dấu vân tay khóa công khai MD5 SSH tiêu chuẩn ở trên. Nhưng nếu là 40 chữ số hex, thì đó thực sự là dấu vân tay được tính bằng cách lấy SHA1 của khóa riêng ở định dạng 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
hoặc tương tự.
cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum
Nếu bạn muốn kiểm tra tệp khóa SSH để xem liệu nó có giống với tệp được báo cáo là "Khóa triển khai" của github hay không, thì đây là dành cho bạn ...
Từ URL riêng tư: https://github.com/<username>/<repo_name>/sinstall/keys bạn sẽ thấy
Tại nhà ga:
$ 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)
Bạn sẽ nhận thấy rằng bạn nhận được cùng một dấu vân tay cho cả khóa riêng và khóa chung.
Lệnh tương tự đó có thể được kết hợp với một tính năng gọn gàng của GitHub, đó là thực tế là chúng phục vụ công khai các khóa công khai SSH của người dùng tại https://github.com/<username>.keys
Dưới đây là một lớp lót bạn có thể sử dụng để tận dụng lợi thế của nó.
$ 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
Sẽ xuất dấu vân tay cho tất cả các khóa công khai được cấu hình trên một ví dụ sshd.