7
3

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 24

GithubでSSHで通信する時にパスワードを聞かれてしまう時の対処法[Git]

Posted at

下のようにsshでgitをクローンしようとしたら

git
git clone git@github.com:....git
Cloning into '...'...
Enter passphrase for key

とパスワードを毎回求められてしまって困っていました。

あれ設定してたのにおかしいなと思いつつ、sshもしかしてあまりわかってない?と思ったので、sshについてちゃんと調べてみようと思います。

sshとは

Secure Shellの略称で、物理的に遠い場所にあるリモートコンピュータに接続するための通信プロトコルです。

コンピュータを遠隔で操作するにあたって遠隔操作するための通信を暗号化することによって、外部からの攻撃を防ぎながら通信することができます。

認証方式

SSHには、パスワード認証方式と公開鍵暗号方式の2つあります。

パスワード認証方式

パスワード認証方式は、webサイトのログインでよくあるIDとパスワードを入力して認証する方式のことです。

クライアントがユーザ情報(ID)とパスワードを送信して、サーバー(接続先のコンピュータ等)がそのユーザ情報とパスワードの組み合わせに合致するデータがあるかを調べ、合致したら認証するという仕組みです。

この認証方式は手軽ではありますが、問題としてパスワードが流出すると不正アクセスできてしまうことやユーザーとパスワードの組み合わせを総当たりで入力する攻撃(ブルートフォールス攻撃)によって、認証が突破されやすいというデメリットがあります。

公開鍵暗号方式

公開鍵暗号方式は、紐づけられた公開鍵秘密鍵を生成して認証する仕組みです。
公開鍵と秘密鍵はクライアントが作成します。

image.png

秘密鍵はクライアントに、公開鍵をサーバーに渡して、認証していきます。

image.png

まず、クライアントがサーバーにリクエストします。

そしてサーバーはレスポンスとして公開鍵で生成した乱数から暗号化した電子署名を送ります。
image.png

image.png

それをクライアントは秘密鍵で復元します。

image.png

image.png

復元して解読した署名をサーバーが受け取ると認証するという仕組みです。

image.png

鍵を生成する

ssh-keygenコマンドを使って公開鍵、秘密鍵を生成します
-tオプションで暗号方式を決定し、-Cでコメントにメールアドレスを記述します。

zsh
ssh-keygen -t ed25519 -C <mail_address>

ed25519とは

エドワーズ曲線デジタル署名の実装の一つで、楕円曲線の一つであるエドワード曲線を使ったものです。

従来のRSA方式に比べて、暗号強度が高いと近年採用されることの多い署名方式です。

パスフレーズを求められると下のような表示が出てきます。
これはrandomart imageという人間が視覚的に生成された鍵が違うものだと認識できるように作られたフィンガープリントのことです。

+--[ED25519 256]--+
| . o=o.     o++  |
| .o+o+ . . ..o==.|
|  o.B . . . .o.Oo|
|   X * =    o E.=|
|  + X * S  . o  .|
|   o + +         |
|    . o          |
|                 |
|                 |
+----[SHA256]-----+

生成ができたら、.ssh/configに下のような記述をします。

~/.ssh/config
Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

秘密鍵をssh-addで登録します。
--apple-use-keychainでmacのキーチェーンに保存しています。
こうすることでsshの際にパスフレーズを聞かれなくなります。

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

これで公開鍵をコピーします。

zsh
pbcopy < ~/.ssh/id_ed25519.pub

ここでsshを登録します。

下のTitleの任意の名前にします。
Keyに先ほどコピーした公開鍵を貼り付けます。
スクリーンショット 2024-11-22 10.17.58.png

Add SSH keyを押した後に下のコマンドで接続できるかを確認します。

zsh
ssh -T git@github.com

下のように出てきたら完了です!

zsh
Hi <user_name>! You've successfully authenticated, but GitHub does not provide shell access.

git関連の記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?