Phần quan trọng nhất của việc thêm "khóa" một cách an toàn vào known_hosts
tệp là lấy dấu vân tay từ quản trị viên máy chủ. Dấu vân tay sẽ trông giống như thế này:
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
Trong trường hợp của GitHub, thông thường chúng ta không thể nói chuyện trực tiếp với quản trị viên. Tuy nhiên, họ đặt chìa khóa trên các trang web của họ để chúng tôi có thể khôi phục thông tin từ đó.
Cài đặt phím thủ công
1) Lấy một bản sao của chìa khóa từ máy chủ và lấy dấu vân tay của nó. NB: Làm điều này trước khi kiểm tra dấu vân tay.
$ ssh-keyscan -t rsa github.com | tee github-key-temp | ssh-keygen -lf -
# github.com:22 SSH-2.0-babeld-f3847d63
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
2) Nhận bản sao dấu vân tay chính từ quản trị viên máy chủ - trong trường hợp này điều hướng đến trang với thông tin trên github.com
- Truy cập github.com
- Chuyển đến trang trợ giúp (trên menu bên phải nếu đăng nhập; ở dưới cùng của trang chủ nếu không).
- Trong phần Bắt đầu , hãy đi tới Kết nối với GitHub bằng SSH
- Đi đến Kiểm tra kết nối SSH của bạn
- Sao chép dấu vân tay SHA256 từ trang đó vào trình soạn thảo văn bản của bạn để sử dụng sau.
3) So sánh các khóa từ hai nguồn
Bằng cách đặt chúng trực tiếp lên nhau trong trình soạn thảo văn bản, thật dễ dàng để xem liệu có gì đó đã thay đổi
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA) #key recovered from github website
2048 SHA256:nThbg6kXUpJ3Gl7E1InsaspRomtxdcArLviKaEsTGY8 github.com (RSA) #key recovered with keyscan
(Lưu ý rằng khóa thứ hai đã bị thao túng, nhưng nó trông khá giống với khóa gốc - nếu điều này xảy ra, bạn đang bị tấn công nghiêm trọng và nên liên hệ với chuyên gia bảo mật đáng tin cậy.)
Nếu các khóa khác nhau hủy bỏ quy trình và liên lạc với chuyên gia bảo mật
4) Nếu các khóa so sánh chính xác thì bạn nên cài đặt khóa bạn đã tải xuống
cat github-key-temp >> ~/.ssh/known_hosts
Hoặc để cài đặt cho tất cả người dùng trên một hệ thống (với quyền root):
cat github-key-temp >> /etc/ssh/ssh_known_hosts
Cài đặt khóa tự động
Nếu bạn cần thêm khóa trong quá trình xây dựng thì bạn nên làm theo các bước 1-3 của quy trình thủ công ở trên.
Hoàn thành việc đó, kiểm tra nội dung github-key-temp
tệp của bạn và tạo tập lệnh để thêm các nội dung đó vào tệp máy chủ đã biết.
if ! grep github.com ~/.ssh/known_hosts > /dev/null
then
echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts
fi
Bây giờ bạn sẽ thoát khỏi bất kỳ ssh
lệnh nào đã StrictHostKeyChecking
bị vô hiệu hóa.