こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

sshの公開鍵認証の基本的な仕組みについて

ネットワークセキュリティの初心者です。教えてください。
sshの認証を使用して、サーバのファイルをクライアントにコピーしようとしています。
こちらで行った手順は以下のとおりです。(クラサバ共にSolaris)

クライアントにて:
 ・ssh-keygen -t rsa で秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成。
 ・scp id_rsa.pub hoge@192.168.10.10:/tmp でサーバに転送
 (パスワードを入力すれば転送できた)
サーバにて
 ・cat /tmp/id_rsa.pub >> ~/.ssh/authorizedkeys で設定

上記にて、クライアントから scp testfile hoge@192.168.10.10:/tmpをしたところ、パスワード入力なしで無事転送することができました。

ここまではOKなのですが(前置き長くてすみません)
この状態で、クライアントにて再度 ssh-keygenを実行してしまうと、またサーバのauthorizedkeysを設定しなおさなければならないのでしょうか?

また、クライアントでのssh-keygen実行時に、id_rsa以外の名前で鍵を作成したときはどうなのでしょうか?(やはりサーバでの設定が必要?)

そもそも鍵を作成する仕組みや鍵を管理している仕組みがわかっていれば簡単な問題かもしれませんが、どなたか教えてください。

こちらでは安易にテストする環境がないため、宜しくお願いします。

投稿日時 - 2009-09-14 20:22:01

QNo.5289963

困ってます

質問者が選んだベストアンサー

こんにちは。

公開鍵認証方式で行うssh通信では、ssh-keygen(KEY GENerator 鍵生成コマンド)で作成した2個一組の公開鍵・秘密鍵ペアを用います。そして、一方で暗号化するともう一方でしか復号(元に戻すこと)できないような仕組みになっています。よって、一方の鍵が紛失・変更されると、もう一方の鍵は役立たずになります。参考URLに通信方法が詳しく書かれていますので御覧になってみて下さい。

> また、クライアントでのssh-keygen実行時に、id_rsa以外の名前で鍵を作成したときはどうなのでしょうか?

どんな名前でも構わないと思います。秘密鍵ファイル名を既定以外のものにした場合は、プログラムのオプションで指定したり(例:scp -i 秘密鍵ファイル、sftp -oIdentityFile=秘密鍵ファイル、等々)、ユーザ設定ファイルを書き直す必要があるかもしれません。

> id_rsa, id_rsa.pubは単なるファイルですか。。。

cat id_rsa.pubなどとして、中身のデータを見てみて下さい。「鍵」として使う文字列・数列が見えると思います。id_rsa.pubの中身(=公開鍵)はauthorized_keys(公開鍵リストのファイル)に最終的に追加登録することで利用できるようになります。よって、一時的に作成するid_rsa.pubというファイル(鍵の入れ物)は追加登録の後は必要なく、捨てても構いません。必要なのは中身の鍵文字列ですから。
(Wr5さんのおっしゃっていることを言い直しているつもりです)

> ちなみに、ネットで調べた限り「公開鍵は消しておいたほうが安全」と書いてあるサイトがあり、

「authorized_keysに追加登録後、必要なくなったid_rsa.pubがユーザ本人の知らないところに漏洩しないように」ぐらいの意味だと思いますが。私が捜した限りでは、以下のような感じで削除を勧める文章は多くありましたが、「消しておいたほうが安全」とまで書かれたページは見つけられませんでした。

http://www.nabe.bne.jp/linux/ssh.html

> id_rsaをchmodで0600にしておきなさいというのも「作り直し防止」の一環なんでしょうかね?

秘密(にすべき)鍵であるid_rsaを、本人のみが読出し・変更・削除可能、他人は読むことも変更・削除することも不可という状態(600)に設定(CHange MODe)します。こうしないと、別のユーザが貴方の秘密鍵をコピーし、貴方になりすましてsshサーバにログインすることが可能になります。ユーザ本人は鍵を作りなおすことはあるでしょうから、「(本人の)作り直し防止」が必要とは思いません。

参考URL:http://webos-goodies.jp/archives/50665333.html

投稿日時 - 2009-09-17 02:34:16

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Wr5

当方、Linuxですが……

>この状態で、クライアントにて再度 ssh-keygenを実行してしまうと、またサーバのauthorizedkeysを設定しなおさなければならないのでしょうか?

そういうコトになると思います。
が公開鍵を使い捨てにする必要は無いと思いますが、違いますか?

>また、クライアントでのssh-keygen実行時に、id_rsa以外の名前で鍵を作成したときはどうなのでしょうか?(やはりサーバでの設定が必要?)

あくまでも出力する「ファイル名」の指定でしかないので、作成された公開鍵を登録しないと使えない点は変わらないかと。

投稿日時 - 2009-09-14 23:55:35

お礼

ありがとうございます。
id_rsa, id_rsa.pubは単なるファイルですか。。。
てっきり上記の2ファイルをバックアップして、テスト用に別のファイル名でssh-keygenをしたあとで、
2ファイルを戻せば、サーバに気づかれずにテストできるのかな?
と思ってましたが、甘かったようですね。質問しておいてよかったです。

ちなみに、ネットで調べた限り「公開鍵は消しておいたほうが安全」と書いてあるサイトがあり、消したあとでほかのサーバに公開鍵を渡したいときにはどうするんだろう・・・という点も不思議でした。
id_rsaをchmodで0600にしておきなさいというのも「作り直し防止」の一環なんでしょうかね?

引き続きわかるかた、ご意見をお願いします。 m(_ _)m

投稿日時 - 2009-09-15 07:54:03

あなたにオススメの質問