【Git】SSH接続でリポジトリをcloneする方法を初心者向けにわかりやすく解説

Web開発

はじめに

Gitを活用していく中で、リモートリポジトリからコードを取得する操作はとても重要です。
その際に使われるのがcloneというコマンドですが、SSH接続を使うことで、より安全かつ簡便にやり取りできるようになります。

HTTPS接続でもcloneは可能ですが、チーム開発や機密性の高いプロジェクトであれば、SSH接続のほうが望ましい場面が多いでしょう。
鍵認証方式を用いることで、パスワードをやりとりしなくてもリポジトリへアクセスしやすくなるので、パスワード管理の手間が減ります。

本記事ではgit ssh cloneという操作を中心に、SSH鍵の作成からエラーの対処例までを丁寧に解説していきます。
初めてGitを触る方でもわかるように、専門用語はできるだけかみくだいて説明しますので、必要な知識を少しずつ身につけてみてください。

この記事を読むとわかること

  • GitのSSH接続とは何か
  • SSHキーの作成手順と設定の流れ
  • SSH接続でcloneするときの具体的なコマンド例
  • clone時によくあるエラーの対処方法

GitにおけるSSH接続とは

Gitリポジトリを扱うとき、SSH接続を活用するのはよくある方法のひとつです。
SSHはSecure Shellの略称で、ネットワーク上の通信を暗号化して安全にやり取りします。
簡単に言えば、個人情報やパスワードが漏れにくい形でリモートサーバーに接続できる仕組みです。

SSH接続を使う理由

HTTPSで接続する場合、cloneするときやpushするときに都度パスワードを入力しなければならないことがあります。
一方でSSHの場合は鍵認証という仕組みを使うため、一度設定を完了すればパスワード入力を求められにくくなります。

以下のようなメリットがあります。

  • 毎回のパスワード入力を省略できる
  • パスワードの漏洩リスクが少ない
  • 大規模プロジェクトでも運用管理しやすい

実務での活用シーンとしては、たとえば会社の内部リポジトリを個人のパソコンから安全にcloneしたいときにSSH接続が利用されます。
また、GitHubやGitLabなどのホスティングサービスでもSSHキーを登録するだけで、比較的スムーズにリポジトリ操作ができるようになるでしょう。

Git SSH clone の活用場面

git ssh cloneの主な活用シーンとしては、まず自分の開発環境にリポジトリを取得するときが挙げられます。
特にクローズドなリポジトリ、あるいはアクセス制限のあるリポジトリを扱う場合には、SSHキーが活躍するはずです。

たとえば以下のような状況で使われることが多いです。

  • チームメンバーだけがアクセスできるプライベートリポジトリ
  • ソースコードの開示に慎重な企業プロジェクト
  • 公共のWi-Fiや不安定なネットワーク環境で安全に作業したいとき

このように、SSH接続は実務での利用価値がとても高いと言えます。
では、具体的にSSHキーをどう作成し、Gitでcloneするのか、その手順を次の見出しで確認していきましょう。

SSHキーの作成手順

SSH接続でのcloneを利用する際には、あらかじめSSHキーの作成とリポジトリホスティングサービスへの登録が必要です。
多くの初心者の方はこの作業でつまずきがちなので、手順を順番に見てみます。

ターミナルを使ったSSHキー生成

SSHキーの作成は、一般的にターミナル(コマンドプロンプトやPowerShellなど)で行います。
ここでは、例としてEd25519という形式のキーを作成する手順を確認しましょう。

ssh-keygen -t ed25519 -C "メールアドレスなどのコメント"

実行するとキーの保存場所を聞かれることがありますが、特に理由がなければデフォルトパスを使って問題ありません。
続いてパスフレーズの入力を求められますが、運用方針によっては空のままでもできます。
ただ、より安全性を高めるためにはパスフレーズを設定しておくと良いでしょう。

作成が完了すると、~/.ssh/ フォルダ(Windowsの場合はユーザーディレクトリ以下)に秘密鍵と公開鍵の2つが生成されます。
秘密鍵は自分だけが厳重に保管し、公開鍵の内容をGitHubやGitLabなどのサービスに登録します。

既存キーの確認手順

すでにSSHキーを作成済みの場合、~/.ssh/ フォルダを確認してみてください。
よくあるファイル名としては次のようなものがあります。

  • id_ed25519
  • id_ed25519.pub

.pubが付いているほうが公開鍵、付いていないほうが秘密鍵です。
他のサービスやリポジトリですでに使っているキーがある場合は、同じキーを使っても問題ありません。
ただし複数のプロジェクトでキーを使い回す場合は、管理が煩雑にならないようフォルダを分けたり名前を変えたりする工夫が必要です。

複数の鍵ファイルが混在していると、どれが有効な鍵なのか分からなくなるかもしれません。
念のためフォルダ整理やファイル名の管理をこまめに行うのがおすすめです。

GitリポジトリをSSHでcloneする流れ

ここからはいよいよgit ssh cloneの手順を見ていきます。
大きく分けると、以下の3ステップになります。

  1. 公開鍵をGitHubやGitLabなどに登録する
  2. 自分の端末側でSSHエージェントを起動し、秘密鍵を読み込む
  3. SSH用のリポジトリURLを使ってcloneする

SSH接続でcloneするメリット

リポジトリの読み書き時に認証情報を都度入力しなくて済むことが最大のメリットです。
HTTPS接続の場合、「ユーザー名」と「パスワード(またはトークン)」を聞かれるケースがありますが、SSHの場合は鍵が確認できれば接続可能なため、毎回の入力はほぼ不要です。

また、パスワード管理や漏洩リスクを軽減できるため、セキュリティ要件の厳しい現場でも採用されやすい方法と言えます。

実際のclone手順

GitHubなどのホスティングサービス上で、リポジトリのページにアクセスすると、通常HTTPS形式とSSH形式の2種類のURLが選べるボタンがあるはずです。
SSHキーを登録してある場合は、SSH形式のURLをコピーして、以下のようにコマンドを実行します。

git clone git@github.com:ユーザー名/リポジトリ名.git

上記のような形式がSSHのURLです。
すでにSSHエージェントを起動して鍵が読み込まれていれば、特にパスワード入力の手間なくクローンが開始されます。

もし鍵を読み込んでいない場合は、下記のように一度エージェントを起動してから秘密鍵を追加してみてください。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

鍵ファイルの名前やパスフレーズをつけたかどうかで操作が微妙に変わりますが、基本的にはこの形でOKです。

SSH接続でよくあるエラーと対処法

Permission deniedCould not resolve hostname といったエラーは初心者の方がよく遭遇します。
以下、代表的なエラーをいくつか紹介してみます。

Permission denied (publickey):

→ SSHキーが正しく登録されていないか、エージェントに追加していない可能性があります。

Could not resolve hostname:

→ URLのスペルが間違っている、またはネットワーク接続が不安定な場合に起こります。

Host key verification failed:

→ サーバーの指紋(ホストキー)が変わっている、もしくは違うサーバーに紐付いているケースがあります。

万一エラーが出たら、鍵ファイルのパスや登録状態、SSHエージェントの起動状態を確認してみましょう。
タイポやネットワーク状況も要チェックです。

まとめ

ここまで、git ssh cloneを使ったリポジトリ取得の方法を紹介してきました。

SSHキーを作成し、GitHubやGitLabなどのホスティングサービスに公開鍵を登録すれば、パスワードを何度も打たなくてもリポジトリにアクセスできるようになります。
セキュリティ面でも安全性が高いため、実務やチーム開発の現場でも利用されることが多い方法です。

まずはローカル環境でSSHキーを作成し、clone操作を試してみるのがおすすめです。
慣れてきたら複数のリポジトリを管理する方法なども検討すると、さらに使い勝手が増すでしょう。

鍵認証はやや面倒に感じるかもしれませんが、慣れるとHTTPSより便利に感じることが多いです。
もしエラーに遭遇した場合でも、鍵の設定やGitのURLが正しく指定されているかを落ち着いて確認すれば、スムーズに解決できるようになるでしょう。

Gitをマスターしよう

この記事で学んだGitの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。