Vì vậy, tôi đã tìm kiếm một cách trần tục để bỏ qua sự tương tác thủ công của máy chủ không rõ ràng trong việc nhân bản một repo git như dưới đây:
brad@computer:~$ git clone git@bitbucket.org:viperks/viperks-api.git
Cloning into 'viperks-api'...
The authenticity of host 'bitbucket.org (104.192.143.3)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
Lưu ý dấu vân tay khóa RSA ...
Vì vậy, đây là một điều SSH, điều này sẽ hoạt động cho git trên SSH và chỉ những thứ liên quan đến SSH nói chung ...
brad@computer:~$ nmap bitbucket.org --script ssh-hostkey
Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-05 10:21 EDT
Nmap scan report for bitbucket.org (104.192.143.3)
Host is up (0.032s latency).
Other addresses for bitbucket.org (not scanned): 104.192.143.2 104.192.143.1 2401:1d80:1010::150
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 1024 35:ee:d7:b8:ef:d7:79:e2:c6:43:9e:ab:40:6f:50:74 (DSA)
|_ 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40 (RSA)
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 42.42 seconds
Đầu tiên, cài đặt nmap trên trình điều khiển hàng ngày của bạn. nmap rất hữu ích cho một số thứ nhất định, như phát hiện các cổng mở và điều này-- xác minh bằng tay dấu vân tay SSH. Nhưng, trở lại với những gì chúng ta đang làm.
Tốt Tôi đã bị xâm phạm ở nhiều nơi và máy móc mà tôi đã kiểm tra nó-- hoặc lời giải thích hợp lý hơn về mọi thứ đang trở nên tồi tệ là điều đang xảy ra.
Đó là "dấu vân tay" chỉ là một chuỗi được rút ngắn với thuật toán một chiều để thuận tiện cho con người chúng ta có nguy cơ có nhiều hơn một chuỗi phân giải thành cùng một dấu vân tay. Nó xảy ra, chúng được gọi là va chạm.
Bất kể, trở lại chuỗi ban đầu mà chúng ta có thể thấy trong ngữ cảnh bên dưới.
brad@computer:~$ ssh-keyscan bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
no hostkey alg
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-129
bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-123
no hostkey alg
Vì vậy, trước thời hạn, chúng tôi có cách yêu cầu một hình thức nhận dạng từ máy chủ ban đầu.
Tại thời điểm này, chúng tôi dễ bị tổn thương như tự động - các chuỗi khớp nhau, chúng tôi có dữ liệu cơ sở tạo dấu vân tay và chúng tôi có thể yêu cầu dữ liệu cơ sở đó (ngăn ngừa va chạm) trong tương lai.
Bây giờ để sử dụng chuỗi đó theo cách ngăn chặn việc hỏi về tính xác thực của máy chủ ...
Tệp know_hosts trong trường hợp này không sử dụng các mục nhập bản rõ. Bạn sẽ biết các mục được băm khi bạn nhìn thấy chúng, chúng trông giống như băm với các ký tự ngẫu nhiên thay vì xyz.com hoặc 123,45,67,89.
brad@computer:~$ ssh-keyscan -t rsa -H bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
Dòng bình luận đầu tiên vô cùng xuất hiện-- nhưng bạn có thể thoát khỏi nó bằng một chuyển hướng đơn giản thông qua quy ước ">" hoặc ">>".
Vì tôi đã cố gắng hết sức để có được dữ liệu chưa được sử dụng để xác định "máy chủ" và tin cậy, tôi sẽ thêm nhận dạng này vào tệp know_hosts trong thư mục ~ / .ssh của tôi. Vì bây giờ nó sẽ được xác định là máy chủ lưu trữ đã biết, tôi sẽ không nhận được lời nhắc được đề cập ở trên khi bạn còn trẻ.
Cảm ơn đã gắn bó với tôi, bạn đi đây. Tôi đang thêm khóa RSA bitbucket để tôi có thể tương tác với kho git của mình ở đó theo cách không tương tác như một phần của quy trình làm việc CI, nhưng bất cứ điều gì bạn làm những gì bạn muốn.
#!/bin/bash
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.old && echo "|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==" >> ~/.ssh/known_hosts
Vì vậy, đó là cách bạn giữ trinh tiết cho ngày hôm nay. Bạn có thể làm tương tự với github bằng cách làm theo các hướng tương tự vào thời gian của riêng bạn.
Tôi đã thấy rất nhiều bài viết tràn ngăn xếp bảo bạn lập trình thêm khóa một cách mù quáng mà không có bất kỳ loại kiểm tra nào. Bạn càng kiểm tra khóa từ các máy khác nhau trên các mạng khác nhau, bạn càng có thể tin tưởng rằng máy chủ chính là máy chủ mà nó nói - và đó là điều tốt nhất bạn có thể hy vọng từ lớp bảo mật này.
SAI LẦM
ssh -oStricthostKeyChecking = không có tên máy chủ [lệnh]
SAI LẦM
ssh-keyscan -t rsa -H tên máy chủ >> ~ / .ssh / know_hosts
Đừng làm một trong những điều trên, làm ơn. Bạn đã có cơ hội để tăng cơ hội tránh ai đó nghe lén việc chuyển dữ liệu của bạn thông qua một người đàn ông trong cuộc tấn công giữa - hãy nắm lấy cơ hội đó. Sự khác biệt theo nghĩa đen là xác minh rằng khóa RSA mà bạn có là một trong những máy chủ trung thực và bây giờ bạn biết cách lấy thông tin đó để so sánh chúng để bạn có thể tin tưởng vào kết nối. Chỉ cần nhớ nhiều so sánh từ các máy tính & mạng khác nhau thường sẽ tăng khả năng tin tưởng vào kết nối của bạn.