SSH と HTTPS のテスト
このステップでは、リモートの Git リポジトリとやり取りする際の HTTPS プロトコルと SSH プロトコルの違いを探ります。どちらのプロトコルもコードの取得とプッシュが可能ですが、認証方法が異なります。
すでに origin
リモートを HTTPS で使用するように設定しています。両方のプロトコルを使ってリポジトリをクローンするシミュレーションを行い、URL 形式の違いを見てみましょう。
まず、~/project
ディレクトリに戻ります。
cd ~/project
次に、HTTPS を使ってリポジトリをクローンするシミュレーションを行います。クローンに認証が必要ないパブリックリポジトリの URL を使用します。
git clone https://github.com/git/git.git git-https-test
このコマンドは、公式の Git リポジトリを git-https-test
という名前の新しいディレクトリにクローンします。クローンの過程を示す出力が表示されます。HTTPS でパブリックリポジトリをクローンする場合は通常、認証情報が不要なのでこの操作が可能です。
次に、同じリポジトリを SSH プロトコルを使ってクローンするシミュレーションを行います。SSH の URL 形式は異なり、通常 git@hostname:user/repo.git
のようになります。
git clone [email protected]:git/git.git git-ssh-test
このコマンドを実行すると、ホストの信頼性に関するメッセージやアクセス拒否エラーが表示されることがあります。これは、SSH でクローンするには SSH キーを使った認証が必要だからです。この環境では SSH キーを設定していないため、接続に失敗するか、認証情報の入力を求められます。
Cloning into 'git-ssh-test'...
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6qU/mzgpTw4mSjJA9PMpTkCXPzQ7lPkLiA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
no
と入力して Enter キーを押すと、接続試行を拒否できます。
これは、HTTPS はパブリックアクセス(クローンなど)には簡単で、SSH は SSH キーを設定すれば認証付きアクセス(変更のプッシュなど)により安全で便利な方法を提供するという重要な違いを示しています。
ここで、テスト用のディレクトリを削除できます。
rm -rf git-https-test git-ssh-test
HTTPS と SSH をいつ使うかを理解することは、Git のワークフローを管理し、リポジトリへの安全なアクセスを確保するために重要です。