• ベストアンサー
  • 暇なときにでも

SSHって・・?

Linux勉強中で疑問に思っている点があります。 SSHを利用すると、暗号化を行うことができるということですが・・・・教えて下さい。たとえば・・・ 例:Aはサーバーで秘密鍵を保持、Bはクライアントで   公開鍵を保持。 B(クライアント/公開鍵)→A(サーバー/秘密鍵) 公開鍵を使ってサーバーAにデータを送信後、 サーバー側では、秘密鍵を使ってデータを解読。 A(サーバー/秘密鍵)→B(クライアント/公開鍵) この場合は、データはどう暗号化されているのでしょうか?秘密鍵でデータを暗号をすると、公開鍵を持ってる人達には解読できてしまうのですよね? "ls"コマンドで叩いた機密情報が仮にA→Bに結果が返ってくる場合は、暗号化されないのでしょうか? SSHを使ってFTPをする場合も同様のことはいえないのでしょうか?? Webで情報を集めて、公開鍵と秘密鍵の事に関しては 調べてみたつもりなのですが・・・ 申し訳ありませんが、ご教授下さい。 よろしくお願い致します。

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

  • Linux系OS
  • 回答数1
  • 閲覧数89
  • ありがとう数2

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

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

公開鍵暗号が使われるのはセッション確立時の共通鍵送付時だけです。 1.サーバAはクライアントBに対してRSA認証を行います。 2.クライアントBが実際のデータ通信に使うセッション鍵 (共通鍵) を生成します。 3.サーバAの公開鍵で暗号化してサーバAに送付します。 4.サーバAはクライアントBから送られてきたセッション鍵をサーバAの秘密鍵で復号化します。 5.以後の通信はセッション鍵 (共通鍵) を使ってやりとりが行われます。 RSA認証の詳細などは参考URLを見てください。かなり丁寧に解説されています。 ただ、参考URLには記述がありませんが、SSHではサーバ認証も行われていたと思います (初めてサーバに接続したときに警告画面が表示されるのはこのためです)。

参考URL:
http://rat.cis.k.hosei.ac.jp/article/rat/linuxliteracy/ssh.html

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

質問者からのお礼

ありがとうございます。 大変よくわかりました。

関連するQ&A

  • 公開鍵暗号について

    失礼します。 公開鍵暗号についてです。 Linux系OSカテゴリで質問することではないかもしれませんが、 sshサーバーの設定の際に疑問になったことなのでここで質問させてください。 公開鍵暗号方式について無勉強だったので調べていると、 Wikipediaより、 1.通信を受ける者(受信者)は自分の公開鍵(暗号化のための鍵)P を全世界に公開する。 2.受信者に対して暗号通信をしたい者(送信者)は、公開鍵 P を使ってメッセージを暗号化してから送信する。 3.受信者は、公開鍵 P と対になる秘密鍵(復号のための鍵)S を密かに持っている。この S を使って受信内容を復号し、送信者からのメッセージを読む。 4.暗号通信を不正に傍受しようとする者(傍受者)が、送信者が送信した暗号化されたメッセージを傍受したとする。傍受者は、公開鍵 P は知っているが、秘密鍵 S は受信者だけが知っている情報であるので分からない。P から S を割り出すことは(計算時間的に)極めて難しい。そのため、暗号文を復号することはおよそできない。 とありました。 sshを使ってサーバーにアクセスする場合、秘密鍵はクライアント側が持つことになりますが、 そのとき、サーバーからクライアントへのデータは秘密鍵があるので解読できるのは理解できます。 しかし、その反対はサーバー側に秘密鍵がないので無理なのでは? 不勉強でここで悩んでいます。 どなたかご教授いただけないでしょうか? また、ssh用に作成した秘密鍵は「厳重に保管しておく」とよく書かれていますが、 具体的にどうするのかはっきりしません。 パスワード保護でもすればよいのでしょうか? これについても宜しくお願い致します。

  • SSHのホスト認証について

    現在VineLinux3.2を使ってサーバの勉強をしている、ド素人です。 SSHのユーザ認証が、 (1)サーバ側で乱数生成→クライアントの公開鍵で暗号化→ (2)クライアントに送信→ (3)クライアントが受信→ (4)秘密鍵で複合化→サーバに送信→ (5)サーバはクライアントから送られた乱数を確認して認証 という流れで、なるほど、これでユーザを認証できるってのは分かるのですが、 ホスト認証がよくわかりません、 SSHでサーバにアクセスすると、 サーバの公開鍵が ~/.ssh/knows_hosts に登録されますが、 この公開鍵を使って、ユーザ認証と同じ方法で接続先ホストを認証してるのでしょうか? そうだとしたら、 2度目のアクセスからはホストを認証するのに、 この~/.ssh/known_hostsの 公開鍵を使った方法が有効だというのは分かりますが、 一番最初のアクセスではこの公開鍵を使ってもホストの認証は出来ないと思うのですが(接続先から送られてくる公開鍵を使うだけなので) どういう仕組みになってるのでしょうか? よろしくおねがいします。

  • 公開鍵と秘密鍵

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

  • SSH に ついて

    最近、FTPサーバーの起動のさせ方は判ったのですが 色々検索して、質問をすると 個人でのデータのやり取りだと、 SSHでSCPが良いとの意見がありましたので、今勉強しています・・・ CENTOS6 のサーバー機用のPCに SSHをインストールしましたが 設定のところで詰まってる感じ?です 手持ちのLINUXの本を参考にし、 また、このサイトを参考にしました・・・ http://www.multiburst.net/sometime-php/2010/11/sshd/ ここの 『 SSH2による鍵の生成 』 まではやりましたが 先の方がどうもよく判りません・・・ 『 公開鍵の移動 』 ですがどうしたらいいのでしょうか? A機はマイPC で B機はサーバー機 A機で作ったデータを暗号化でB機に移動したいのですが B機で作った公開鍵と秘密鍵を、何かにコピーしたりして A機に公開鍵をうつせばいいのでしょうか? A → B と言う事は、両方必要なのはB機で A機は公開鍵だけ持っていればいいのでしょうか? また、データの持ち運びはメモリスティックだと簡単なのでしょうか? (未だに使った事ありませんので、便利なら購入を検討しています)

  • ssh の仕組み

    ssh の仕組みについて、よくわからない事があるので、よろしくお願いします。 (サーバの設定) ・/etc/ssh/sshd_config ファイルの編集をして、ルート権限ログインできないようにする。 ・デーモンを起動する。 (クライアントの設定) 1#ssh-keygen -t rsa 2#mv id_rsa.pub authorized_keys2 3#ssh hoge@192.168.x.x 4#rsa を入力 5#known_hostに関してのプロンプトに、yesで答える 6#パスワードを入力 上記の手順を踏んだとき、 まず、 (質問1:) 4のrsaを入力というのは、 相手側に自分の公開鍵を渡すと言う事でいいのでしょうか?? (質問2) これで、ログインした場合、サーバはその公開鍵を使って、暗号化→クライアントはそれを自分の秘密鍵(id_rsa)により、復号化。という解釈でいいのでしょうか? (質問3) 質問2の場合、クライアントから、サーバに送信するメッセージは暗号化されていないのでしょうか? (質問4) /etc/ssh/sshd_configの設定で、RSAAuthorized no にしてしまったら、 暗号化されないで、平分で、データが流れてしまうのでしょうか? (質問5) 結局のところ、SSHというものは、ユーザのパスワードを知っていたら、簡単に侵入ができるようなものなのでしょうか? (質問6) 上記の手順自体が全く間違っているのでしょうか? (質問7) ~/.ssh/known_hosts の中に入っているデータはいったいなんなんでしょうか??(相手の公開鍵??) /* 長くなりましたが、答えれる部分でいいので、よろしければお答えいただけないでしょうか。どうか、よろしくお願いします。

  • 公開鍵方式の安全性が全く分からない

    公開鍵方式が暗号化方式として優れていたと30年も言われてきた理屈が分からないので教えてください。 下記のNTT PC COMMUNICATIONSのサイトを見ていると以下のように説明されていました。 <引用元URL> http://www.nttpc.co.jp/yougo/%E5%85%AC%E9%96%8B%E9%8D%B5.html ~~~~~~~~~<説明抜粋>~~~~~~~~~~~~~~~ 秘密鍵暗号化方式は、鍵を盗まれると解読されてしまうとか、 連絡を取り合う相手の数だけ鍵を持たないといけないといった管理上の問題がある。 そこで、公開鍵と秘密鍵を組み合わせた公開鍵暗号化方式という方法が考え出された。       <中略> 秘密鍵は、あなただけが持っていて誰にも渡さない。それに対して、あなたの公開鍵は、たくさんの人に配布しておく。 あるいは、誰でも簡単に入手できるようにしておく。 秘密鍵は、あなただけが持っていて誰にも渡さない。それに対して、あなたの公開鍵は、たくさんの人に配布しておく。 あるいは、誰でも簡単に入手できるようにしておく。 そして、あなたが秘密鍵で暗号化したデータは、あなたの公開鍵でのみ復元できる。 あなたの公開鍵で暗号化されたデータは、あなたの秘密鍵でのみ復元できる。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 他にもいろいろ記事を読んだのですがだいたい似たような説明になっています。 しかしこの説明から考えると下記のリスクが発生するから全く安全な方法とは思えず、 何を以て30年近くも安全な暗号方式として使われ続けてきたのかが さっぱり分かりません。 ~~~~~~~上URLの記事から私が思う公開鍵方式のリスク~~~~~~~ 例えばAさんからBさんにデータを送ったとする。 データはAさんの秘密鍵で暗号化されている。 しかしそのデータ通信が発生したことにCさん(Aさん、Bさんの敵)が気付いた。 Bさんの公開鍵は誰でも簡単に入手できるのだから当然Cさんも入手している。 そのためBさんに送られたデータはCさんにも解読されてしまう。 何らかの方法でAさんに送られたデータをCさんも入手してしまえば 公開鍵でCさんも解読することが可能になってしまう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ すみませんが上記の私が思うリスクが発生しにくい理由を教えてください。

  • SSH接続について

    すみません。色々調べたのですが、どうしても解決しないため ご存知の方がいれば教えてください。 SSHを使って、外部側(インターネット)から自宅PCにアクセスしたいと 思っています。 そこで、以下のように構築しました。 自宅PC(Fedora) --- ルータ(インターネット) ---- windowsPC 自宅PCには、SSHサーバ構築済みです。 公開鍵と秘密鍵も生成済みです。 ルーターは22ポートを開けました。(ちゃんと開いているかも 確認済みです) この状態で、 (1)自宅のもうひとつのwindowsPCからSSHクライアント(poderosa)を使い  ログイン成功(公開鍵方式) (2)自宅のもうひとつのwindowsPCからPuttyを使い、ログイン成功 (3)自宅のもうひとつのwindowsPCからwinscpを使い、ログイン成功 すべて公開鍵方式です。 (4)外部のwindowsPCからSSHクライアント(poderosa)を使い、  ログイン成功(公開鍵方式) とここまでは順調だったのですが、以下がなぜか接続できず、 「接続が拒否されました」とでます。 (5)外部のwindowsPCからPuttyを使ったログイン (6)外部のwindowsPCからwinscpを使ったログイン 公開鍵秘密鍵の生成は、poderosaの鍵生成ツールを使い生成しています。 また、PuTTYとwinscpの秘密鍵は、poderasaで生成した秘密鍵を Puttygenを使い、Putty用に生成しなおしてから使用しています。 (1)~(4)までが成功して、(5)~(6)が失敗する理由がわかりません。 すべて22番ポート(ssh)を使っていると思うので、 (4)が成功すれば、(5)、(6)は成功すると思っていたのですが、 なにかまだ足りない設定があるのでしょうか。 情報が不足している場合は、ご指摘ください。 以上、よろしくお願いいたします。

  • 公開鍵方式とは

    公開鍵による暗号化についてメチャクチャ分かりやすく教えてください。 普通は鍵を公開しては意味が無いし、秘密鍵とセットなら秘密の鍵が1つあれば良い様に思えるのです。 ** 公開鍵方式  **** 対になる2つの鍵を使ってデータの暗号化・復号化を行なう暗号方式。  片方は他人に広く公開するため公開鍵と呼ばれ、もう片方は本人だけがわかるように厳重に管理されるため秘密鍵と呼ばれる。秘密鍵で暗号化されたデータは対応する公開鍵でしか復号できず、公開鍵で暗号化されたデータは対応する秘密鍵でしか復号できない。

  • SSHの公開鍵方式の接続について

     SSHの公開鍵(&秘密鍵)の認証での接続について質問です。  現在、Mac OSXのターミナルからLinuxのFC5サーバーに接続しようとしているのですが、うまく接続できません。  FC5側のSSHサーバーはすでに起動しているのですが、最初のホスト認証で躓いています。最初のアクセスの歳にSSHサーバー側から認証鍵を渡されるのですが、その時点で謝ってnoを選択してしまいました。以後、公開鍵が使えない状態になってしまい、接続しても「Permission denied (publickey,gssapi-with-mic).」になってしまいます。最初の接続時の公開鍵を再発行してもらうにはどうしたらよいのでしょうか?  ホスト認証の後は、ユーザー認証となると思いますが、この設定もちょっとよくわからない部分があります。  サーバー側で公開鍵と秘密鍵のセットをssh-kegenで作りますが、MacのOSXのターミナルから接続する場合は、この秘密鍵をどこに保存すればようのでしょうか?また保存後にこの秘密鍵を呼び出すにはどうしたらようでしょうか?  OSXも基本的にはUNIXなので、ホームディレクトリに.sshディレクトリなどを作成して保存するのでしょうか?    詳細な設定方法を教えて頂けると幸いです。

  • リモート認証について

    本日学校の課題としてでた問題についてお聞きしたいのですが、調べても理解できなかったので質問させていただきました。 「問題」 以下の認証プロトコルを考えたとき、どのような問題点があるか具体的に述べよ。 1, 各ユーザは公開鍵をそれぞれもち、サーバは対応する公開鍵を保持する。(公開鍵からは秘密鍵はわからない。また、秘密鍵は各ユーザによって厳重に管理されているものとする) 2, 各ユーザは認証の際に決められた自分のユーザIDを自分の秘密鍵で暗号化したものをサーバに認証のための情報として送る。 3,サーバは送られてきたものを対応する公開鍵で複合し、ユーザIDを確認する。 という問題です。 特に問題点がないように思われます。 どなたか解説をしていただけませんでしょうか? 長々と失礼しました。