Отже, я шукав мирський спосіб обійти невідомі взаємодії вручну з клонуванням git repo, як показано нижче:
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)?
Зверніть увагу на відбиток ключа RSA ...
Отже, це SSH річ, це буде працювати для git над SSH та просто пов'язаними з SSH речами загалом ...
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
Спочатку встановіть nmap на щоденний драйвер. nmap дуже корисний для певних речей, як-от виявлення відкритих портів, і це - вручну перевірка відбитків SSH. Але повернемося до того, що ми робимо.
Добре. Я або компрометований в декількох місцях і на машинах, які я перевірив, - або більш правдоподібне пояснення того, що все є фактурним Дорі - це те, що відбувається.
Цей "відбиток пальців" - це лише рядок, укорочений алгоритмом в одну сторону для нашої людської зручності, ризикуючи, що більше одного рядка перетвориться на один відбиток пальця. Буває, їх називають зіткненнями.
Незалежно від того, повернемося до початкового рядка, який ми можемо побачити в контексті нижче.
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
Отже, випереджаючи, у нас є спосіб запитати форму ідентифікації у вихідного хоста.
На даний момент ми вручну настільки ж вразливі, як автоматично - рядки збігаються, у нас є базові дані, які створюють відбиток пальців, і ми можемо запитати ці базові дані (запобігаючи зіткненням) у майбутньому.
Тепер використовувати цей рядок таким чином, що перешкоджає питати справжність хостів ...
Файл known_hosts в цьому випадку не використовує записи в простому тексті. Коли ви побачите їх, ви знаєте хешовані записи, вони виглядають як хеші зі випадковими символами замість xyz.com або 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==
Перший рядок коментарів нахабно відображається-- але ви можете позбутися від нього простим перенаправленням через конвенцію ">" або ">>".
Оскільки я зробив все можливе, щоб отримати незабезпечені дані, які будуть використані для ідентифікації "хоста" та довіри, я додам цю ідентифікацію до файлу знаних_хостів у моєму каталозі ~ / .ssh. Оскільки він тепер буде визначений як відомий господар, я не отримаю вищезазначеного підказки, коли ви були юнаком.
Дякую за те, що ви тримаєтесь зі мною. Я додаю ключ RSA бітбукета, щоб я міг взаємодіяти зі своїми сховищами git неінтерактивним способом як частина робочого процесу CI, але все, що ви робите, що хочете.
#!/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
Отже, так ви залишаєтесь дівою на сьогодні. Можна зробити те ж саме з github, дотримуючись подібних інструкцій у свій час.
Я побачив стільки повідомлень про переповнення стека, які дозволяють вам програмно додавати ключ наосліп без будь-якої перевірки. Чим більше ви перевіряєте ключ від різних машин у різних мережах, тим більше можете довіряти, що хостом є той, про який він говорить - і це найкраще, на що ви можете сподіватися з цього рівня безпеки.
НЕПРАВИЛЬНО
ssh -oStrictHostKeyChecking = немає імені хоста [команда]
НЕПРАВИЛЬНО
ssh-keyscan -t rsa -H ім'я хоста >> ~ / .ssh / known_hosts
Не робіть жодної з перерахованих вище речей, будь ласка. Вам надається можливість збільшити шанси уникнути підслуховування ваших передач даних через людину в середній атаці - скористайтеся цією можливістю. Різниця буквально підтверджує, що у вас є ключ RSA - це добросовісний сервер, і тепер ви знаєте, як отримати цю інформацію для їх порівняння, щоб ви могли довіряти з'єднанню. Просто пам’ятайте, що більше порівнянь із різних комп’ютерів та мереж зазвичай збільшить вашу здатність довіряти з’єднанню.