1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitでSSH接続を行う キーを正しく理解できているか

Last updated at Posted at 2025-02-01

HTTPSとSSHどちらがよりセキュアか?

一般的には SSHの方がセキュリティ面では優れている と考えられます。
理由は以下の通りです。

認証情報の管理がしやすい → HTTPSのトークンは漏洩するとそのまま使われる可能性があるが、SSH鍵は秘密鍵が流出しない限り安全。
自動化やCI/CD環境での運用がしやすい → SSH鍵を専用のデプロイキーとして登録できる。
パスフレーズを設定することで安全性を高められる → SSH鍵はさらにセキュリティ強化が可能。

事前:設定の確認

現在のプロジェクトを指しているかを確認

image.png

公開鍵と秘密鍵を生成

以下のコマンドで秘密鍵と公開鍵を生成することができます。

と脳死で行うよりかは他にも暗号化アルゴリズムが存在するので、その辺も理解しておきましょう。

$ ssh-keygen -t rsa
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:

ssh-keygenで生成できるキー

オプションで指定できる暗号化方式は以下の4つ。

dsa
rsa
ecdsa
ed25519

dsaは脆弱性が高いため、推奨されていません。というよりもgitでは使用できないようです。
また 2025 年には OpenSSH からも削除される予定らしいです。

We recommend enabling RSA/SHA1 only as a stopgap measure until legacy
implementations can be upgraded or reconfigured with another key type
(such as ECDSA or Ed25519).

日本語訳
RSA/SHA1は、レガシー実装がアップグレードされるか、
別の鍵タイプ(ECDSAやEd25519など)
で再設定されるまでの暫定措置としてのみ有効にすることを推奨する。

そのため、上記の

ssh-keygen -t rsa

この方法で秘密鍵を生成する場合は、以下のコマンドで、sha256に設定されているか確認しましょう。

ssh-keygen -l -f ~/.ssh/id_rsa.pub

ed25519 について

ed25519については公式のサイトを記載します

これによると、より高速な解読にも関わらず
RSA/SHA256と同等のセキュリティをカバーすることができるそうです。

High security level. This system has a 2^128 security target; breaking it has similar difficulty to breaking NIST P-256, RSA with ~3000-bit keys, strong 128-bit block ciphers, etc. The best attacks known actually cost more than 2^140 bit operations on average, and degrade quadratically in success probability as the number of bit operations drops.

日本語訳

高いセキュリティ・レベル。 このシステムは2^128のセキュリティ・ターゲットを持つ。
これを破るのは、NIST P-256、〜3000ビットの鍵を持つRSA、強力な128ビット・ブロック暗号などを
破るのと同程度の難易度である。 
知られている最良の攻撃は、平均で2^140ビット以上の演算を要し、
ビット演算数が減少するにつれて成功確率は二次関数的に低下する。

Chat-GPT先生に聞いてみました

ED25519の特徴
高速な署名と検証

ED25519は楕円曲線暗号(ECC)の一種で、従来のRSAに比べて署名の作成・検証が高速です。
例えば、RSA-2048と比較すると、ED25519は数倍のスピードで動作します。
高いセキュリティ

256ビットの鍵長を持ち、十分な耐量子性を持っています(ただし、量子コンピュータに完全耐性があるわけではない)。
攻撃に対する強度は、約3000ビットのRSA鍵に相当するとされています。
短い鍵サイズと署名サイズ

秘密鍵・公開鍵ともに32バイト(256ビット)。
署名サイズは64バイト(512ビット)。
これにより、データの転送や保存が効率的になります。
簡単な鍵管理

ED25519は秘密鍵から直接公開鍵を導出できるため、鍵の管理が比較的シンプル。
これにより、誤った鍵ペアの管理が発生しにくい。
耐側信道攻撃(Side-Channel Attack)

設計時からタイミング攻撃やキャッシュ攻撃などの対策が施されており、安全性が高い。

Githubで公開鍵の設定

GithubのsettingからSSH AND GPG KEYSより
NEW SSH keyで公開鍵を設定してください

image.png

Titleはお好みで大丈夫です
Keyには下のcatコマンドで出力されたものを入力してください
image.png

最後尾のメールアドレスは抜く
マスク済み

$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2...........d9xTHS.........RNYqJmKFiRX4qkwMY
D80YTb8Tkyi..........bsF0Saqs/WtWARE=

configファイルを開いて、IdentityFileが作成した秘密鍵であるかを確認する
これが前に設定したものが残っていると、正しくキーが認証されないので、確認してみましょう

% vi ~/.ssh/config         

Host github.com
        IdentityFile ~/.ssh/id_ed25519
        User git

最後に認証してみましょう
最初に認証を行う場合は、このサーバーで大丈夫か確認があるので、パスしましょう

ssh -T git@github.com

これで、ssh接続できたはずです。
セキュリティの基準は年々変わっていくので、認証方式も理解しつつ、正しい設定をしていきましょう。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?