目次
1.SSH接続をする
2.生成時に秘密鍵のファイル名を指定する。
3.フォルダごとに接続するアカウント(=SSH)を変更する
4.リポジトリをクローンするときの設定方法
5.configはpushされる?
GitHubとSSH接続をする
VSCodeでGitHubのプライベートリポジトリをSSH接続で使用する手順は以下の通りです。
-
SSHキーを生成します(まだ生成していない場合)。ターミナルで以下のコマンドを実行し、指示に従ってください。
ssh-keygen -t ed25519 -C "your_email@example.com"
※-C オプションをGitHubのアカウントにしておくと分かりやすい。
ssh-keygen -t ed25519 -C "hogehoge"
こうするとRSAの長い鍵が生成される。
ssh-keygen -t rsa -b 4096 -C "hogehoge"
-
生成された公開鍵(デフォルトでは
~/.ssh/id_ed25519.pub
)の内容をコピーします。 -
GitHubアカウントの設定ページ(https://github.com/settings/keys)を開き、新しいSSHキーを追加します。公開鍵の内容を貼り付けて保存します。
-
VSCodeを開き、コマンドパレット(Ctrl+Shift+P または Cmd+Shift+P)を開きます。
-
"Git: Clone"と入力して、"Git: Clone"コマンドを選択します。
-
クローンするプライベートリポジトリのSSH URLを入力します(
git@github.com:username/repository.git
の形式)。 -
リポジトリのクローン先となるローカルディレクトリを選択します。
-
クローンが完了したら、VSCodeでクローンしたリポジトリを開きます。
-
VSCodeのターミナルを開き、以下のコマンドを実行して、SSHキーを使用していることを確認します。
ssh -T git@github.com
"Hi username! You've successfully authenticated, but GitHub does not provide shell access."というメッセージが表示されれば、SSHキーが正しく設定されています。
これで、VSCodeでGitHubのプライベートリポジトリをSSH接続で使用できるようになります。ソースコントロールビューやターミナルから、Gitの操作(コミット、プッシュ、プル)を行えます。
SSH接続を使用することで、GitHubにアクセスするたびにユーザー名とパスワードを入力する必要がなくなり、よりセキュアな環境で開発を進められます。
生成時に秘密鍵のファイル名を指定する
SSHキーを生成する際に、ファイル名を指定することができます。これにより、既存の秘密鍵ファイルを上書きすることなく、新しい鍵ペアを作成できます。
以下の手順で、カスタムのファイル名を指定してSSHキーを生成します。
-
ターミナルを開き、
ssh-keygen
コマンドを実行します。-f
オプションを使用して、鍵ペアのファイル名とパスを指定します。Linux/Macssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/my_github_key
PowerShellssh-keygen -t ed25519 -C "your_email@example.com" -f $env:USERPROFILE/.ssh/my_github_key
この例では、
~/.ssh/my_github_key
という名前で鍵ペアが生成されます。PowerShellssh-keygen -t rsa -b 4096 -C "hogehoge" -f $env:USERPROFILE\.ssh\id_rsa_hogehoge
この例では、
~/.ssh/id_rsa_hogehoge
という名前で鍵ペアが生成されます。 -
パスフレーズを設定するかどうかを聞かれます。セキュリティ上の理由から、パスフレーズを設定することが推奨されています。設定する場合は入力し、そうでない場合は空のままエンターキーを押します。
-
鍵ペアが生成されると、指定したファイル名で秘密鍵(
my_github_key
)と公開鍵(my_github_key.pub
)が~/.ssh
ディレクトリに作成されます。 -
config
ファイルを編集して、新しい秘密鍵ファイルを使用するようにSSH設定を更新します。~/.ssh/config
ファイルを開き、以下の行を追加または修正します。Host github.com HostName github.com User git IdentityFile ~/.ssh/my_github_key
-
GitHubアカウントの設定ページ(https://github.com/settings/keys)を開き、新しい公開鍵(
my_github_key.pub
の内容)を追加します。 -
新しい鍵ペアが正しく設定されたことを確認するため、ターミナルで以下のコマンドを実行します。
ssh -T git@github.com
"Hi username! You've successfully authenticated, but GitHub does not provide shell access."というメッセージが表示されれば、新しい鍵ペアが正常に機能しています。
これで、既存の秘密鍵ファイルを上書きすることなく、カスタムのファイル名で新しいSSHキーペアを生成できました。VSCodeや他のGitクライアントで使用する際は、新しい秘密鍵のパスを指定するようにしてください。
フォルダごとに接続するアカウント(=SSH)を変更する
.git/config ファイル内で [remote "origin"]
セクションの url
には、SSH接続を使用するためのカスタムホスト名を指定できます。この方法は、~/.ssh/config
ファイルでホスト名とSSHキーを定義している場合に特に便利です。
~/.ssh/config
ファイルで以下のように windows3_1
ホストを定義しているとします:
Host windows3_1
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_win31
この場合、.git/config
ファイルの [remote "origin"]
セクションで、url
を以下のように設定できます:
[remote "origin"]
url = git@windows3_1:hogehoge/gefugefu.git
この設定により、hogehoge
リポジトリへのSSH接続に、~/.ssh/id_rsa_win31
キーが自動的に使用されます。
このアプローチの利点は以下の通りです:
-
~/.ssh/config
ファイルでSSH接続の詳細を一元管理できる。 -
.git/config
ファイルでは、カスタムホスト名を使用してSSH接続を指定するだけでよい。 - VSCodeを含む多くのGitクライアントは、この設定を自動的に認識する。
したがって、[remote "origin"]
セクションの url
にカスタムホスト名を使用することは、SSH接続を管理する効果的な方法だと言えます。複数のリポジトリを扱う場合、~/.ssh/config
ファイルでSSH接続の詳細を一元管理し、各リポジトリの .git/config
ファイルでカスタムホスト名を使用するのが良いでしょう。
リポジトリをクローンするときの設定方法
SSH接続の準備ができたのちに、git clone
を実行する前に git init
を実行する必要はありません。
git init
は、既存のディレクトリを新しい Git リポジトリとして初期化するために使用されます。これは、ローカルディレクトリで新しいリポジトリを作成する場合に使用します。
一方、git clone
は、既存のリモートリポジトリのコピーをローカルマシンに作成するために使用されます。git clone
コマンドは、新しいディレクトリを作成し、リモートリポジトリの内容をそのディレクトリにダウンロードして、自動的に新しい Git リポジトリとして初期化します。
したがって、git clone
を実行するときは、git init
を別途実行する必要はありません。git clone
が、新しいリポジトリの初期化を含む全ての必要な作業を行います。
例えば、以下のコマンドは、hogehoge/gefugefu
リポジトリのコピーを新しいディレクトリ gefugefu
に作成します:
git clone git@windows3_1:hogehoge/gefugefu.git
このコマンドを実行した後、gefugefu
ディレクトリには、リモートリポジトリの内容が含まれ、Git リポジトリとして初期化されています。
クローン後、.git/config
ファイルを開いて、[remote "origin"]
セクションの url
を必要に応じて修正できます。例えば、~/.ssh/config
ファイルでカスタムホスト名を定義している場合は、それに合わせて url
を変更します。(※すでに自動設定されているはず)
[remote "origin"]
url = git@windows3_1:hogehoge/gefugefu.git
この修正により、カスタムホスト名 windows3_1
が使用され、~/.ssh/config
ファイルで定義されている対応する SSH キーが自動的に選択されます。
.git/config
ファイルを保存した後、git fetch
、git pull
、git push
などの通常の Git コマンドを使用して、リモートリポジトリとの間で変更を同期できます。
この方法により、git clone
でリポジトリを取得した後、.git/config
ファイルを修正するだけで、カスタムの SSH 設定を使用できるようになります。
configはpushされる?
.git/config
ファイルは、通常、Git リポジトリの管理下に置かれておらず、git push
コマンドを使用してリモートリポジトリにプッシュされることはありません。
.git/config
ファイルは、ローカルリポジトリ固有の設定を保存するために使用されます。これには、リモートリポジトリの URL、ユーザー名、メールアドレス、その他のローカル設定が含まれます。これらの設定は、各開発者のローカル環境に固有のものであり、リポジトリを共有する他の開発者に影響を与えるべきではありません。
Git は、.gitignore
ファイルに .git/
ディレクトリ全体を含めることで、.git/
ディレクトリとその内容がコミットやプッシュの対象から除外されるようにしています。これにより、ローカルの Git 設定がリモートリポジトリに誤ってプッシュされることを防ぎます。
ただし、リポジトリ全体を zip ファイルなどに圧縮して共有する場合は、.git/
ディレクトリが含まれる可能性があるため、共有前に .git/
ディレクトリを削除することをお勧めします。
したがって、.git/config
ファイルを編集しても、その変更がリモートリポジトリにプッシュされることはないので、安心して必要な設定を行うことができます。