• 締切済み
  • すぐに回答を!

公開鍵と秘密鍵

サーバ側で ssh-keygen -t rsa と入力すると,公開鍵と秘密鍵が生成されますが どうしてクライアント側に秘密鍵をもたせるのでしょうか? 逆でも通信できる気がします. あと,サーバ1台に対して,クライアントが複数いる場合に 公開鍵と秘密鍵のペアはクライアントの人数分生成するのが適切なのでしょうか? (複数のサーバに1台のクライアントが接続する場合も,各サーバが1台のクライアントに対して公開鍵・秘密鍵を生成するのが適切なのでしょうか?) よろしくおねがいします.

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1500
  • ありがとう数2

みんなの回答

  • 回答No.2
  • entree
  • ベストアンサー率55% (405/735)

お互いが正しく通信する(なりすましを防ぐ)ためにはサーバ側もクライアント 側も認証されている必要があります。 サーバ側の秘密鍵はサーバの/etc/sshd の下あたりにあるはずです。クライアン トが初めてサーバに接続したときに、サーバ鍵の公開鍵がクライアントに送られ ます。これを受けて、クライアント側ではその鍵を受け入れるかどうかのポップ アップが表示されるのが普通です。(本当はあらかじめ安全な方法でクライアン ト側に送付しておき登録することが望ましいのですが・・・) 同じようにクライアント側も認証されなければなりません。(RSA 認証の場合) クライアントを認証するために、クライアント側で(※)生成したキーペアのう ち、公開鍵をサーバ側に送り、サーバ側のauthorized_keys2 ファイル(OpenSSH の場合)にその内容を記録します。 ※クライアント環境にキーペア生成ツールがない場合、便宜上サーバ上でキーペ  アを作成することもできます。 > どうしてクライアント側に秘密鍵をもたせるのでしょうか? 既にお分かりかもしれませんが、クライアント(利用者)を認証するためです。 クライアント側にパスワードを求めるアクションと同じと考えていただいて構いません。 > あと,サーバ1台に対して,クライアントが複数いる場合に > 公開鍵と秘密鍵のペアはクライアントの人数分生成するのが適切なのでしょうか? 誰からの接続かをサーバ側で判別できないと意味がないので、そういうことにな ります。クライアントの人数分生成するのが適切な運用です。 > (複数のサーバに1台のクライアントが接続する場合も,各サーバが1台のク > ライアントに対して公開鍵・秘密鍵を生成するのが適切なのでしょうか?) いいえ。使い回しできます。Aさんのサーバ1、2、3へのアクセスを許可した いなら、Aさんの公開鍵をサーバ1、2、3で信用するように(authorized_keys2 ファイルに書く)すればよいのです。 ところで、クライアント=台数ではなく、クライアント=ユーザであるべきです。 すなわち、クライアント1台でもマルチユーザならクライアント数は1ではない ということです。もちろん、誰もが同じ認証条件と言うことであれば1としてし まっても問題ありません。

共感・感謝の気持ちを伝えよう!

質問者からの補足

公開鍵と暗号鍵のwebページを見ると、送信者の方に公開鍵がわたされています。 送信者=クライアントというイメージが強いため、今回のようなことになりました。 クライアントに秘密鍵を渡す理由としては、誰もがサーバにアクセスできるのを防ぐためという認識でよろしいでしょうか? よろしくおねがいします。

関連するQ&A

  • SSHの公開鍵について

    お世話になっております。 現在3台のサーバA,B,Cがあり、AのサーバからB,Cにパスワードなしでログインできるようにするため、 AのサーバでSSHの公開鍵と秘密鍵を作成しました。(パスフレーズはnull) 具体的な手順は以下になります。 ------------------------------------------------------------------------------------------- 1. Aサーバにて公開鍵と秘密鍵を作成 A # ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (//.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in //.ssh/id_rsa. Your public key has been saved in //.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@A 2. 秘密鍵、公開鍵が作成されていることを確認 A # ls ~/.ssh id_rsa id_rsa.pub known_hosts 3. 公開鍵をBとCサーバへ配信 A # scp ~/.ssh/id_rsa.pub root@B:/tmp Password: id_rsa.pub 100% |***************************************| 223 00:00 4. BとCサーバ側で公開鍵の登録 B # cat /tmp/id_rsa.pub > ~/.ssh/authorized_keys ------------------------------------------------------------------------------------------- 登録後、AサーバからB,CサーバにSSHで接続してみたのですが、一見パスワードなしでログインできているようでした。 ただ、何故か B,Cサーバや無関係なDサーバからもAサーバへパスワードなしでアクセスできてしまいます。 公開鍵を登録したのはB,Cサーバのみで、B,CサーバからAサーバに対してパスワードなしでアクセスできないはずという認識です。 更に、数日後AサーバからB,Cサーバに接続を試みたところ、以下のメッセージが出力されました。 ------------------------------------------------------------------------------------------- ホスト 'B (1.1.1.1)' の認証を確立できません. RSA 鍵フィンガープリントは xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx です 本当に接続を継続してもよろしいですか (yes/no)? ------------------------------------------------------------------------------------------- 公開鍵はBサーバ初回接続時にknown_hostsへ登録済みで、Bサーバ側のIPアドレスの変更なども実施していません。 SSHの仕様で、公開鍵が数日で変更されるのでしょうか? 上記について、アドバイスや問題点があればご教示いただければ幸いです。

  • SSH通信で秘密鍵の読み込みが失敗

    ●質問の主旨 クライアントコンピューターとサーバー間で SSH通信を行いたいと考えています。 公開鍵暗号方式でSSHサーバーに対して、 クライアントコンピュータからリモート接続を行おうとして クライアントのTeraTermを使って秘密鍵でアクセスしようとしたところ、 「SSH2秘密鍵の読み込みに失敗しました」という添付画像のような メッセージが出ます。 このメッセージ出されることなく、クライアント~サーバー間で SSH通信を行うためには、どこをチェックすればよいでしょうか? ご存知の方がいらっしゃいましたら、ご教示願います。 ●質問の補足 現在の状況は以下の通りです。 1.クライアントのTeraTermで秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成 2.秘密鍵(id_rsa)はクライアントのCドライブのRSAという任意の名前のフォルダに保存 3. 公開鍵(id_rsa.pub)はSFTPでサーバーの一般ユーザのホームディレクトリに転送 4. 一般ユーザのホームディレクトリ配下に/.ssh/authorized_keysディレクトリを追加 (cat id_rsa.pub > /home/user/.ssh/authorized_keys) 5.chmodコマンドで.ssh及び.ssh/authorized_keysのアクセス権を変更 6.cat authorized_keysで中身を見ると、 公開鍵(id_rsa.pub)の文字の羅列が並んでいる ●環境 上記で言う、クライアントコンピュータはWindows8を使用しています SSHサーバーは、CentOS6.0をディストリビューションとするLinuxを使用しています

  • 公開鍵の管理

    現在,sshサーバを管理しているのですが, ユーザそれぞれの公開鍵を/home/user_name/.ssh/authorized_keysに保存しています. ユーザが秘密鍵をなくしてしまったりした場合にかってに対応する公開鍵を交換されたくないので, どこかのディレクトリで一括に管理したいのですが,可能でしょうか? よろしくお願いします.

  • 回答No.1

秘密鍵・公開鍵の仕組みや役割をもう一回確認してみてください。 公開鍵で接続できるのなら、誰だって接続できてしまうのがおわかりになると思います。公開鍵=その気になれば誰でも入手可能なファイルです。 >公開鍵と秘密鍵のペアはクライアントの人数分生成するのが適切なのでしょうか? 本来秘密鍵はプライベートなものですから(ここ重要)、アカウントが異なれば違う鍵セットを使うのが原則です。 一人(1アカウント)が複数のクライアントを使用する場合は同じセットで構わないです。 同様に、一人(1アカウント)がひとつのクライアントから複数のサーバに接続する場合も1セットで構いません。(普通はそうする) 自分で秘密鍵の管理ができるなら、もちろんサーバごとのセットを使ったって構いません。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • WinSCPで秘密鍵を使用する場合

    サーバとクライアント間でSSH通信を行いたいと思っております。 サーバはOpenSSH for Windowsがインストされており、 クライアントはWin2000のWinSCPがインストしております。 質問です。 1.このクライアントはセキュリティが厳しい環境にある 端末(インストールもできない)なのでPuTTyKeyGenerator が入っておらず他の端末で作った秘密鍵を使用しようとして おりますが問題ないでしょうか? 2.1.で可能であるのなら、その鍵の生成方法として、WinSCPで動作させるためType of KeyをSSH1でよろしいのでしょうか? 3.その秘密鍵に対する公開鍵はPuTTyKeyGenerator上でpubファイル を生成させるのか、それともテキストファイルに表示されている公開鍵文字列をコピーするだけでよいのでしょうか? 4.その公開鍵をOpenSSH上のサーバのあるディレクトリの./sshに格納するだけで鍵交換は行われるのでしょうか? よろしくお願いいたします。

  • 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以外の名前で鍵を作成したときはどうなのでしょうか?(やはりサーバでの設定が必要?) そもそも鍵を作成する仕組みや鍵を管理している仕組みがわかっていれば簡単な問題かもしれませんが、どなたか教えてください。 こちらでは安易にテストする環境がないため、宜しくお願いします。

  • 公開鍵と秘密鍵を新しく差し替える場合どうしますか?

    公開鍵と秘密鍵を新しく差し替える場合どうしますか? 新しいPCで作業するときにPCの名前を変更したついでに公開鍵と秘密鍵を新しく作成しようかと思ったのですが 差し替え方法がわからなかったので質問させていただきます それとも個人で使ってるレベルだったらわざわざそこまでせずに以前使っていたものを使いますか? みなさんが新しく作業PCを買い替えた時にどうしているか気になります たくさんの回答お待ちしております

  • 公開鍵簿とは?

    暗号について勉強しています。本などの参考文献を読んでいると、公開鍵暗号では利用者Aが秘密鍵と公開鍵を生成し、公開鍵を公開簿などに登録して、Aと連絡を取りたいBが公開された鍵を利用して、文章を暗号化するとされているのですが、公開鍵簿となる物(同等の物)は実際にあるのでしょうか?

  • 無料S/MIME証明書発行での公開鍵秘密鍵

    無料S/MIME証明書発行での公開鍵秘密鍵 ですが、IEで、無料の証明書を申し込むときに、 RSAの公開鍵と秘密鍵を作成しなくてはならないと思うのですが、 この計算は、自分のPCの中で行われるのでしょうか、 それとも、証明書を発行してくれる会社のサーバーで計算されるのでしょうか?

  • RSA(公開鍵)

    a=2, b=3として以下の方法(RSA)で公開鍵、秘密鍵を作成し、平文4を暗号化したいのですが、暗号化しても4のままになってしまいます。これって暗号化されているのでしょうか?どなたかわかる方がいましたらよろしくお願いします。 1-二つの素数を決める。これをa,bとする。 2-a*b=c (cを合成数) 3-d=(a-1)(b-1)という自然数dを求める 4-f*e/dで余りが1となるようなfを求める。(秘密鍵) 暗号文 =M(平文)^e / c の余り。

  • 共通鍵・公開鍵・秘密鍵の鍵とは?

    共通鍵・公開鍵・秘密鍵の鍵とは要は「123KJNIDlll・・・」などの数字や文字のパスワードのことでしょうか? 例えば、共通鍵暗号方式では、ファイル・テキストなどのパスワードを「123gh」などと設定して、 それを送信者と受信者でパスワードの情報を共有するのでしょうか? 公開鍵暗号方式も同様にファイル・テキストに「123yu」は公開鍵、「456ghjは秘密鍵と設定をするのでしょうか?

  • SSL での 公開鍵、秘密鍵

    Gメールで、POP接続してメールを取り出すときは、 SSL(TLS)での接続となります。 ここで、RSA暗号を使う場合の、公開鍵を秘密鍵のセットは 接続した瞬間に作成されるのでしょうか? それとも、既に作ってある公開鍵と秘密鍵のセットが選ばれるのでしょうか? もし、既に作ってあるセットの中から選ぶ場合には、 鍵のセットはサーバーの中に何セットくらい用意されているのでしょうか? WireShark で、SSL の暗号化を解読してパケットの中を見る方法があるとのことで、 すこし、気になっています。 お分かりの方よろしくお願いいたします。   参考: https://www.softbanktech.jp/yko/2010/07/001129.html

  • 公開鍵の削除方法と、指紋の意味について

    再インストールに伴い、秘密鍵のバックアップを取っていなかったため、秘密鍵の再作成を行いました。 公開鍵を検索サーバに登録したのですが、以前使っていた公開鍵と今回作った公開鍵が検索サーバに登録されています。 すでに公開している公開鍵を削除するには、どうすればいいのでしょうか? ---------------------------------------------- 現在、特殊な用途時に、相手とPGPによるメールのやりとりをしています。 技術系メーリングリスト等に「finger print: **** **** **** **** ...」と 指紋を掲載している人がいますが、 これは「誰の、何鍵(秘密?公開?)のfinger print」なのでしょうか? また、これを使うときはどういう時なのでしょうか? 今回私のように、複数の公開鍵をアップロードしたときに、先方が私の公開鍵を特定するためのfinger printなのでしょうか?

  • 公開鍵と秘密鍵

    sshで初回にログインするときはサーバー側の公開鍵を登録しますか?というプロンプトがでると思います。 おそらく暗号化もせずにネットワーク上で送られてくるので改ざんの可能性が0とは言えないですよね? もちろん改ざんが行われたとしたらログインできないので検地することは可能でしょうが、ログイン妨害ができると思います。 ログインできないだけでもかなりの攻撃だと思うのでそれを防ぐ対策的なことはsshを使ううえでできないのでしょうか?