そこで、以下に示すように、gitレポのクローンを作成する未知のホストの手動操作をバイパスするためのありふれた方法を探していました。
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 over 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ディレクトリのknown_hostsファイルに追加します。これは既知のホストとして識別されるため、あなたが若者だったときに上記のプロンプトは表示されません。
頑張ってくれてありがとう。CIワークフローの一部として非インタラクティブな方法でgitリポジトリとやり取りできるように、bitbucket RSAキーを追加していますが、何でも好きなようにできます。
#!/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 = no hostname [コマンド]
違う
ssh-keyscan -t rsa -Hホスト名>>〜/ .ssh / known_hosts
上記のいずれもしないでください。中間者攻撃を介して誰かがあなたのデータ転送を盗聴するのを避ける機会を与えられます-その機会を利用してください。違いは文字通り、持っているRSAキーが真正なサーバーのものであることを確認することであり、接続を信頼できるように、それらの情報を取得して比較する方法を知っています。異なるコンピューターとネットワークからのより多くの比較は、通常、接続を信頼する能力を高めることを覚えておいてください。