MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
GitHub - SSHの設定のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
GitHub - SSHの設定
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == SSH (Secure Shell) は、暗号化された通信を用いてリモートサーバーに安全に接続するためのプロトコルである。<br> <br> GitHubとの通信方法にはHTTPSとSSHの2種類があり、HTTPSではリポジトリへのプッシュ / プルのたびにユーザ名とPersonal Access Tokenの入力が必要となる。<br> 一方、SSHでは公開鍵認証方式を使用するため、一度鍵を設定すれば以降の認証は自動的に行われる。<br> <br> Claude CodeやOpenCode等のAIコーディングツールからGitHubリポジトリを操作する場合にも、SSH接続の設定が必要となる。<br> <br> SSHを使用する主なメリットは以下の通りである。<br> * パスワードやトークンの入力が不要 *: 毎回の認証操作が省略されるため、作業効率が向上する。 * 高い安全性 *: 公開鍵認証方式はパスワード認証よりも安全であり、通信内容も暗号化される。 * 利便性 *: 一度設定すれば、以降のgit push / pull / clone等の操作で追加の認証入力は不要である。 * AIコーディングツールとの親和性 *: Claude CodeやOpenCode等のターミナルベースのAIツールは対話的なパスワード入力に対応していない場合があるため、SSH接続が事実上必須となる。 <br> SSH接続の仕組みは以下の通りである。<br> # ローカルコンピュータでSSH鍵ペア (秘密鍵と公開鍵) を生成する。 # 公開鍵をGitHubアカウントに登録する。 # ローカルからGitHubに接続する際、秘密鍵で署名を生成してGitHubが公開鍵で検証する。 # 検証に成功すると認証が完了して、リポジトリへのアクセスが許可される。 <br><br> == SSHの設定 == ==== SSH鍵の種類 ==== SSH鍵にはいくつかの暗号アルゴリズムが存在する。<br> <br> 下表に、主なSSH鍵の種類と特徴を示す。<br> <br> <center> {| class="wikitable" |+ SSH鍵の種類 ! アルゴリズム !! 鍵長 !! 特徴 |- | Ed25519 || 256ビット固定 || 現在最も推奨されるアルゴリズム。<br>高速かつ安全性が高い。GitHubも推奨している。 |- | RSA || 2048 / 4096ビット || 広く普及しており互換性が高い。<br>4096ビット以上の使用を推奨する。 |- | ECDSA || 256 / 384 / 521ビット || 楕円曲線暗号を使用する。<br>Ed25519が利用できない環境での代替として使用される。 |- | DSA || 1024ビット || 非推奨。OpenSSH 7.0以降ではデフォルトで無効化されている。 |} </center> <br> <u>特別な理由がない限り、Ed25519の使用を推奨する。</u><br> <br> ==== SSH鍵の生成 ==== 以下のコマンドを実行して、Ed25519アルゴリズムのSSH鍵ペア (秘密鍵と公開鍵) を生成する。<br> <br> # Ed25519鍵を生成する (推奨) ssh-keygen -t ed25519 -C "GitHubに登録しているメールアドレス" -f ~/.ssh/id_ed25519_github # Ed25519が使用できない環境の場合はRSA 4096ビットを使用する ssh-keygen -t rsa -b 4096 -C "GitHubに登録しているメールアドレス" -f ~/.ssh/id_rsa_github <br> コマンド実行時のオプションの詳細は以下の通りである。<br> * <code>-t ed25519</code> *: 鍵の種類を指定する。 * <code>-C "メールアドレス"</code> *: コメントを設定する。一般的にメールアドレスを指定する。 * <code>-f ~/.ssh/id_ed25519_github</code> *: 鍵ファイルの保存先とファイル名を指定する。 <br> コマンド実行後にパスフレーズの入力を求められる。<br> <br> Enter passphrase (empty for no passphrase): Enter same passphrase again: <br> パスフレーズを設定すると、鍵の使用時にパスフレーズの入力が必要になる。<br> セキュリティの観点からパスフレーズの設定を推奨するが、空欄のまま[Enter]キーを押下して省略することも可能である。<br> <br> 鍵の生成が完了すると、以下に示す2つのファイルが作成される。<br> * <u>~/.ssh/id_ed25519_github</u> *: 秘密鍵。絶対に他者と共有してはならない。 * <u>~/.ssh/id_ed25519_github.pub</u> *: 公開鍵。GitHubに登録するファイル。 <br> ==== SSH Agentの設定 ==== SSH Agentは秘密鍵をメモリ上に保持して、SSH接続時に自動的に鍵を提供するデーモンである。<br> パスフレーズを設定した場合、SSH Agentを使用することで毎回のパスフレーズ入力を省略できる。<br> <br> # SSH Agentをバックグラウンドで起動する eval "$(ssh-agent -s)" # 秘密鍵をSSH Agentに追加する ssh-add ~/.ssh/id_ed25519_github <br> パスフレーズを設定している場合は、<code>ssh-add</code>コマンドの実行時に1度だけパスフレーズの入力を求められる。<br> <br> SSH Agentの起動をシェルのログイン時に自動化する場合は、シェルの設定ファイルに以下を追記する。<br> <br> <syntaxhighlight lang="sh"> # Bashの場合 # SSH Agent if [ -z "$SSH_AUTH_SOCK" ] then eval "$(ssh-agent -s)" > /dev/null 2>&1 ssh-add ~/.ssh/id_ed25519_github > /dev/null 2>&1 fi </syntaxhighlight> <br> <syntaxhighlight lang="fish"> # Fishの場合 # SSH Agent if not set -q SSH_AUTH_SOCK eval (ssh-agent -c) > /dev/null 2>&1 ssh-add ~/.ssh/id_ed25519_github > /dev/null 2>&1 end </syntaxhighlight> <br> ==== SSH configの設定 ==== <u>~/.ssh/config</u> ファイルにGitHub用の設定を追記する。<br> この設定により、GitHub接続時に使用する鍵ファイルが自動的に選択される。<br> <br> Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github AddKeysToAgent yes <br> 各設定項目の詳細は以下の通りである。<br> <br> <center> {| class="wikitable" |+ SSH config設定項目 ! 項目 !! 説明 |- | Host || 接続先のエイリアス名<br><u>github.com</u> を指定する。 |- | HostName || 実際の接続先ホスト名<br><u>github.com</u> を指定する。 |- | User || 接続ユーザ名<br>GitHubでは常に <u>git</u> を指定する。 |- | IdentityFile || 使用する秘密鍵のパス |- | AddKeysToAgent || <code>yes</code> を指定すると、初回接続時に自動的にSSH Agentに鍵が追加される。 |} </center> <br> 複数のGitHubアカウントを使い分ける場合は、以下に示すようにHostを別名にして設定する。<br> <br> # メインアカウント Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github_main # サブアカウント Host github-sub HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github_sub <br> サブアカウントのリポジトリをクローンする場合は、以下に示すように指定する。<br> <br> git clone git@github-sub:<ユーザ名>/<リポジトリ名>.git <br> ==== 公開鍵のGitHubへの登録 ==== 生成した公開鍵をGitHubアカウントに登録する。<br> <br> まず、公開鍵の内容をクリップボードにコピーする。<br> <br> # 公開鍵の内容を表示する cat ~/.ssh/id_ed25519_github.pub <br> # 表示例 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... user@example.com <br> 表示された文字列を全てコピーして、以下の手順でGitHubに登録する。<br> <br> # GitHubにログインする。 # 右上のプロフィールアイコンを選択して、[Settings]を選択する。 # 左メニューの[Access]セクションにある[SSH and GPG keys]を選択する。 # [New SSH key]ボタンを押下する。 # 以下の項目を入力する。 #* Title #*: 鍵の識別名を入力する。 #*: 例: <u>SUSE-PC</u> #* Key type #*: <u>Authentication Key</u> を選択する。(デフォルト) #* Key #*: コピーした公開鍵を貼り付ける。 # [Add SSH key]ボタンを押下する。 # GitHubのパスワード入力を求められた場合は、入力して認証する。 <br> GitHub CLIを使用して登録する場合は、以下に示すコマンドを実行する。<br> <br> gh ssh-key add ~/.ssh/id_ed25519_github.pub --title "SUSE-PC" <br> ==== 接続テスト ==== SSH鍵の登録が完了した後、GitHubとのSSH接続が正常に動作するかテストする。<br> <br> ssh -T git@github.com <br> 初回接続時は、以下のようにホスト鍵の確認を求められるため<code>yes</code>と入力する。<br> <br> The authenticity of host 'github.com (20.27.177.113)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes <br> 接続に成功すると、以下のメッセージが表示される。<br> <br> Hi <ユーザ名>! You've successfully authenticated, but GitHub does not provide shell access. <br> 上記のメッセージが表示されれば、SSHの設定は完了である。<br> <br> 接続に失敗した場合は、以下のコマンドを実行して詳細なデバッグ情報を確認する。<br> <br> ssh -vT git@github.com <br> ==== 既存リポジトリのリモートURLをSSHに変更 ==== 既にHTTPSでクローンしたリポジトリをSSH接続に切り替える場合は、リモートURLを変更する。<br> <br> # 現在のリモートURLを確認する git remote -v # リモートURLをSSHに変更する git remote set-url origin git@github.com:<ユーザ名>/<リポジトリ名>.git # 変更後のリモートURLを確認する git remote -v <br> ==== SSH鍵のセキュリティに関する注意事項 ==== SSH鍵を安全に運用するために、以下に示す事柄に留意する必要がある。<br> <br> <center> {| class="wikitable" |+ SSH鍵のセキュリティ対策 ! 項目 !! 説明 |- | 秘密鍵の権限設定 || 秘密鍵ファイルのパーミッションは<code>600</code> (所有者のみ読み書き可) に設定する。<br><code>chmod 600 ~/.ssh/id_ed25519_github</code> |- | 秘密鍵の共有禁止 || 秘密鍵は絶対に他者と共有してはならない。共有するのは公開鍵 (<code>.pub</code>) のみである。 |- | パスフレーズの設定 || 秘密鍵にはパスフレーズを設定することを推奨する。<br>万が一秘密鍵ファイルが漏洩した場合のリスクを軽減する。 |- | 鍵のローテーション || 定期的に新しい鍵ペアを生成して、古い鍵をGitHubから削除することを推奨する。 |- | 不要な鍵の削除 || 使用しなくなったデバイスの鍵は、GitHubの[SSH and GPG keys]設定ページから速やかに削除する。 |} </center> <br> ==== トラブルシューティング ==== 下表に、SSH接続に関する一般的な問題と対処法を示す。<br> <br> <center> {| class="wikitable" |+ SSHトラブルシューティング ! 症状 !! 原因 !! 対処法 |- | Permission denied (publickey) || 公開鍵がGitHubに登録されていない、<br>または秘密鍵のパスが正しくない || <code>ssh-add -l</code>で登録済みの鍵を確認する。<br>SSH configのIdentityFileパスを確認する。<br>GitHubに公開鍵が正しく登録されているか確認する。 |- | Could not open a connection to your authentication agent || SSH Agentが起動していない || <code>eval "$(ssh-agent -s)"</code>を実行してSSH Agentを起動する。 |- | WARNING: UNPROTECTED PRIVATE KEY FILE! || 秘密鍵ファイルのパーミッションが緩すぎる || <code>chmod 600 ~/.ssh/id_ed25519_github</code>を実行する。 |- | Connection timed out || ファイアウォール等でSSHポート (22) がブロックされている || HTTPS経由のSSH接続 (ポート443) を試行する。<br>SSH configに以下を設定する。<br><code>Host github.com</code><br><code> HostName ssh.github.com</code><br><code> Port 443</code> |} </center> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:Git]]
GitHub - SSHの設定
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse