4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RCC (立命館コンピュータークラブ)Advent Calendar 2024

Day 13

git pushの際のsshキー省略したいですか?[githubにsshで接続し,パスフレーズを省略する方法]

Last updated at Posted at 2024-12-13

みなさん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
  1. コマンド実行後,鍵の保存場所を尋ねられる.デフォルトの場所(/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」を選択する.
スクリーンショット 2024-12-13 10.08.54.png

「SSH and GPG keys」を選択する
スクリーンショット 2024-12-13 10.09.39.png

その後「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
  • 以下の設定を追加する.
~/.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-agentssh-addを活用し,さらにGitHubにSSH鍵を登録することで,パスフレーズ入力を省略しつつ安全な開発環境を構築する方法を解説した.特にMacユーザーは,Keychainを利用することで利便性を大幅に向上させることができる.セキュリティと利便性のバランスを考慮し,適切な設定を行うことが重要である.

それではQiitaアドカレ.24企画の今日のクリスマスツリーです.

詳しくはこちらの記事から

スクリーンショット 2024-12-13 10.49.05.png

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?