みなさんGitHubへの連携にSSHを使用していますか?Gitを使用してGitHubなどのリモートリポジトリと連携する際,SSH鍵を利用することで安全かつ便利に操作を行うことができる.しかし,SSH鍵にパスフレーズを設定している場合,Git操作のたびにパスフレーズの入力を求められることがあり,これがめんどい!
git pushをする際にSSHで接続すると以下のようにGithubに接続するたびにパスフレーズが聞かれる.
git push
- Enter passphrase for key '/Users/[user_name]/.ssh/id_rsa':
本記事では,SSHのパスフレーズ入力を省略する方法について詳しく解説する.
GitHubにSSHキーを登録する手順も先に紹介します
gitコマンドやghコマンドに関しては以下の記事から
SSH(Secure Shell)とは
ネットワーク上で安全に通信を行うためのプロトコルであり,Gitではリモートリポジトリとの通信に広く利用されている.SSH鍵は公開鍵認証方式を採用しており,パスフレーズを設定することで鍵のセキュリティを強化できる.しかし,パスフレーズを設定すると,SSH接続のたびに入力が必要となり,開発作業の効率を低下させる要因となる.
GitHubにSSH接続をする方法
SSH鍵の生成
新たにSSH鍵を生成する場合は,以下の手順に従う.
既にSSH鍵を持っている場合は,このステップをスキップして構わない.
SSHキーは~/.sshに保管する.そのため.sshへ移動をする
cd ~/.ssh
SSHキーを作成する.
ssh-keygen -t rsa
- コマンド実行後,鍵の保存場所を尋ねられる.デフォルトの場所(
/Users/[user_name]/.ssh/id_rsa
)を使用する場合は,そのままEnterを押す.その後パスフレーズの設定を求められる.
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Githubに公開鍵を登録
Githubを開き,自分のアイコンを選択し,「Settings」を選択する.
その後「New SSH Key」を選択し,公開鍵を入力する.
入力する公開鍵は以下のコマンドで取得できる
cat ~/.ssh/id_rsa.pub
githubへの接続テストを以下のコマンドで実行する
ssh -T git@github.com
このように出ればOK!
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
SSHキーを省略する設定
ssh-agent
は,SSH鍵をメモリ上に保持し,必要に応じて自動的に鍵を使用して認証を行うサービスである.これを活用することで,Git操作時のパスフレーズ入力を省略できる.
1. ssh-agentの起動
ここからはssh-agent
を使用します.多くのシステムでは,ssh-agent
は自動的に起動するが,起動していない場合は以下のコマンドで手動で起動できる.
eval "$(ssh-agent -s)"
このコマンドは,ssh-agent
をバックグラウンドで実行し,環境変数を設定する.
2. SSH鍵をssh-agentに追加
生成したSSH鍵をssh-agent
に追加するため,以下のコマンドを実行する.
ssh-add ~/.ssh/id_rsa
実行後,パスフレーズの入力が求められる.正しく入力すると,鍵がssh-agent
に追加される.
以下のコマンドを実行して登録されていることが確認できればOK
ssh-add -l
Macを使用している場合,~/.ssh/config
ファイルを編集し,SSH鍵のパスフレーズをKeychainに保存する設定を行うとパスフレーズ入力の省略ができる.
-
~/.ssh/config
ファイルを開く(存在しない場合は作成する).
vim ~/.ssh/config
- 以下の設定を追加する.
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
IdentityFileに作成された秘密鍵のファイル名を登録(.pubとついていないSSHキー)
- ファイルを保存して閉じる(vimの場合はescキーを押した後に:wqでエンター)
- 変更を反映するため,ターミナルを再起動するか,以下のコマンドを実行する.
source ~/.ssh/config
この状態でgit pushを行うと,パスフレーズの入力を求められずに操作が完了する.
git push
- Everything up-to-date
git clone も同様に省略できているはず
git clone git@github.com:your_username/your_repository.git
パスフレーズの入力を省略でき,クローンが正常に行われる.
注意点
- セキュリティの確保: SSH鍵は非常に重要な認証情報であるため,適切に管理することが重要.特に,パスフレーズを省略する場合は,デバイスのセキュリティを確保する必要がある.
- 鍵のバックアップ: SSH鍵を紛失した場合,リポジトリへのアクセスができなくなるため,鍵のバックアップを推奨する.
-
不要な鍵の削除: 使用しなくなったSSH鍵は,
ssh-agent
から削除し,GitHubの設定からも削除すること.
GitでSSHを使用する際,毎回パスフレーズを入力するのは煩わしい.本記事では,ssh-agent
とssh-add
を活用し,さらにGitHubにSSH鍵を登録することで,パスフレーズ入力を省略しつつ安全な開発環境を構築する方法を解説した.特にMacユーザーは,Keychainを利用することで利便性を大幅に向上させることができる.セキュリティと利便性のバランスを考慮し,適切な設定を行うことが重要である.
それではQiitaアドカレ.24企画の今日のクリスマスツリーです.
詳しくはこちらの記事から