Help us understand the problem. What is going on with this article?

ssh-agentを利用して、安全にSSH認証を行う

More than 1 year has passed since last update.

SSH認証、皆さんどのような手順で行ってますか?

ローカルで作業する分にはいいものの、
クラウド上にサーバーを立てて、そこからgitに接続...

などの場面で、まさか秘密鍵をサーバーに置くなんて危険な真似はしてないですよね?
(これ死亡フラグです。)

そんな危険度100%のあなたに是非お伝えしたいのが、ssh-agent

すっごい簡単に説明すると、彼は、ユーザーと常に一緒に行動してくれて、
必要な時に「はいっ」と秘密鍵を渡してくれる、ハイパーセキュリティボーイなのです。

今日はそんなssh-agentの使い方をまとめてみたいと思います。
(Macでの使用を想定しております。ご了承下さい。)

1. ローカルで鍵の作成

まずは通常のssh認証と同じようにローカルで秘密鍵の作成を行っていきます。
ここは特に問題ないと思うので省略。

(不明な方はこのリンクが参考になります。)

2. ssh-agentに鍵の登録

ここからです。
鍵を作成したら、ssh-add [鍵の場所]
で、ssh-agentさんに鍵を渡します。

ただ、この記述方法だと毎回ターミナルを起動するたびに登録がリセットされてしまう為、

ssh-add -K [鍵の場所]

としてあげましょう。

こうすることで、Macのキーチェーンストア(鍵の保管庫)に鍵が登録され、次回以降も自動で呼び出されるようになります。

3 登録された鍵の確認

ssh-add -l 

と打ち込むことで、今ssh-agentさんが認識している鍵の一覧を表示できます。

ssh-add -l.png

こんな感じですね! 
一番後ろに鍵の名前が書かれているので、ここに登録した覚えのある秘密鍵が表示されていればOKです。

今回は、EC2インスタンスのログイン鍵と、gitへの鍵を2つ登録してあります。

4 sshでログイン

では登録した鍵を使ってログインしてみましょう。
手順は簡単。
.sshディレクトリに移動して、

ssh -A [鍵の名前]

と打ち込めばオッケーです。
今回はEC2サーバーへとログインしてみました。

では、これで通常のログインと何が違うのでしょうか。

5 ログイン先から別サーバーにログイン

ここが今回の肝です!
今、ローカルに鍵が2つ(EC2とgit)、ログイン先のサーバーには鍵が0個存在しています。
つまり、通常だとこのログインしたサーバーから別サーバー(今回はgit)へのログインは出来ないですよね。

...ところが、出来るんです。
ssh-agent様のお陰で。

EC2にログインした際に、 -A というオプションを付けました。
これが「ssh-agentを用いてログインしますよ」と言った意味合いで、
つまりは、今EC2にログインしたユーザーと共に、ssh-agentさんもEC2にログインしているのです。
そして、ssh-agentさんは秘密鍵を持っているのでしたよね...?

と言うことは、サーバー → git へと接続をしたい際、

ユーザー:「ssh-agentさん、gitの鍵貸して」
ssh-agent: 「はいっ」
ユーザー: 「ローカルの秘密鍵を使って、サーバー上からgitにログインっと...!」

と言った具合にログインが可能になるのです。
なんてワンダフル。

ただこのログインには1つだけ設定が必要で、
サーバー上の .ssh フォルダ配下のconfig内に
ForwardAgent yes(ssh-agentを有効にしますよ)
と言った設定をしてあげないといけません。
(ホームディレクトリから、cd .sshで移動 → vi config で編集)

今回はサーバーからgitへのログインを想定しているので、

Host github
  HostName github.com
  User git
  ForwardAgent yes

こんな感じで書いてあげた上で、

ssh -T github

と言った具合にログインしてあげれば大丈夫でしょう。

Hi, NaokiMochizuki(gitの登録名), youkoso github comeon

と言った具合に(雰囲気)表示がされれば無事ログイン完了です。

git_login.png

これが正解でした。
大体合ってますね。 笑

最後に

あなたもssh-agentを用いて、安全なsshライフをお過ごし下さい。

naoki_mochizuki
Keeyls株式会社のエンジニアしてます。 無人の鍵受け渡しシステムKEYSTATION(https://key-stations.com/ )や、 シェアオフィスの管理システム( https://sharedoffice-keystations.com/ )など作ってます。
https://keeyls.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした