• ベストアンサー
  • 困ってます

sshの認証鍵の作成はホストかクライアントか?

sshで接続する際に公開認証鍵を使用する場合の認証鍵はホストとクライアントのどちらで作成するべきでしょうか? ネットでいろいろ参照すると、ホストで作成する場合とクライアントで作成する場合の両方が紹介されています。 teratermなどのクライアントで複数のLinuxのホストに接続する場合、 クライアントで作成して、同じ公開鍵を各Linuxのホストに配布したほうが、シンプルだと考えます。 ホストで鍵を作成したほうが、セキュリティ上、好ましい理由などがあれば、教えて頂きたく、質問させて頂きました。

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

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

  • ベストアンサー
  • 回答No.1
  • Wr5
  • ベストアンサー率53% (2177/4070)

ホストで公開鍵&秘密鍵を作成する。 =>秘密鍵をクライアントに転送する必要がある。 ・遠隔にあるホストから安全に秘密鍵を転送する手段は??? ・ホストから秘密鍵を削除し忘れたら??? ・ファイル復元などで削除済みの秘密鍵を復元されたら??? ・クライアント側の秘密鍵の形式が異なっていたら???(PuTTYとか) # 削除し忘れや、復元されて秘密鍵を奪われても、一応はパスフレーズで保護されていますけどね。 # ただし、クラックする側の手元に秘密鍵があれば総当たりなどによってパスフレーズを探すことは不可能ではありません。(現実的かどうかは別ですが…秘密鍵自体がなければ総当たりすらできません) クライアント側で公開鍵&秘密鍵を作成する。 =>公開鍵をホスト側に転送する必要がある。 ・公開鍵なので途中で盗聴されていてもとりあえず問題はない。(telnetでターミナル操作でペーストするとか、FTPで転送する…とか) ・対応する秘密鍵は痕跡すらホスト側には残らない。 ・公開鍵/秘密鍵の形式がホスト側と異なっている場合は、クライアント側で公開鍵の変換が可能。(になっているハズ) ということで、クライアント側でやった方がいい。という風に考えますね。私なら。 1つの秘密鍵で複数のホストに…という質問者さんが書かれている例もありますし。 ネット上での説明でホスト側で作成している。 という例の場合は、クライアント側のソフトが確定できない。というのもあるでしょう。 # クライアントがWindowsだったりLinuxだったりMacだったり…スマホだったりするでしょうし。 # それぞれのパターンでの作り方の説明を書くのは嫌だったのでしょう。(マイナーなツールもあるかも知れませんし。)

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

質問者からのお礼

ありがとうございます。 やはりクライアントで鍵を作成したほうがいいということですね。 公開鍵は盗まれても問題ないということなどが腑に落ちました。 リスクごとに吟味することが大切なんですね。 勉強になりました。

その他の回答 (1)

  • 回答No.2
  • t_ohta
  • ベストアンサー率38% (4404/11335)

理想を言えばクライアント側で鍵を作るほうが良いのではないでしょうか。 秘密鍵は可能な限り外部に出さない方が安全です。 サーバ側で作成して放置してしまって、不正アクセス等で秘密鍵を取られたら好き勝手にアクセスされてしまいますし、サーバからクライアントへ秘密鍵を移動させる際の安全確保という点でもインターネット上を通って来るのであれば暗号化等の対策を施さなければいけません。

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

質問者からのお礼

ありがとうございます。 秘密鍵は絶対安全確保することが大切なんですね。

関連するQ&A

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

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

  • ssh ホスト認証につきまして

    いつもお世話になっております。 sshのホスト認証について質問ですが、 はじめてのホストに接続すると、接続先ホストからホストキー(公開鍵)が送られてきまして、以降、このキーを照合して認証が行われますが、 はじめてのホストに接続した際、なりすましサイトのホストキーを登録してしまったら、以降、ずっと誤ったことが行われるということになる可能性はありますでしょうか。また、だとすれば、はじめてのホストキーは、CDにして渡すとか、SCPで渡すというのが、ベストでしょうか。 お手数をお掛けしますが、どうぞよろしくお願いいたします。

  • RSA公開鍵によるクライアント認証について

    teratermなどでRSAの公開鍵を使ってクライアント認証ができますが、これはパスワード認証のように総当たり攻撃を食らうことがないので、セキュリティー的に安全だと聞きました。 そこで思ったのですが、RSAの公開鍵を使ったクライアント認証をする場合は、パスワード認証はできないように設定しないとまずいですよね?そうしないと結局総当たり攻撃を食らってしまいますよね? 周りの人はパスワード認証もRSAの公開鍵による認証もできる状態で、後者を使っているのですが、これは意味がないように思えるのですが。。。。

  • sshでリモートアクセス

    SUSE LINUXでsshサーバの設定をしているのですが、 WIN XPからteratermでssh接続しようとすると 「ホストに接続できません」と表示されてしまいます。 公開鍵も作成し(rsa)、authorized_keysに追記済みです。

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

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

  • ssh鍵認証

    Aサーバーでsshで秘密鍵と公開鍵をを作成し、公開鍵のみをBサーバーへ置きました。 AサーバーからBサーバーへノンパスでログインはできたのですが、 BサーバーからAサーバーへのノンパスでのログインはできません。 (パスワードが聞かれてしまう) BサーバーからAサーバーへノンパスログイン(鍵認証)するにはどのようにすればよろしいでしょうか? ご存知の方、宜しくお願いします。

  • SSHのクライアントの鍵の設置場所

    WinクライアントがDSAを使ったSSHでOpenSSHのLinuxにログインする場合に、パースワードなく鍵を利用する方法だとします。 Winクライアントが用意するべき鍵は一般的にはどんなフルパスですか? どこにどんな鍵を用意するのか知りたいので教えてください。 特に、Winに鍵を設置するのか、Linuxの/home/kauern/.ssh/?に設置するのか知りたいです。

  • 異なるクライアントからの SSH鍵交換方式の認証

    http://www.atmarkit.co.jp/flinux/rensai/linuxtips/429usekeyssh.htmlを参考にしてPuttyにて問題なくSSH鍵交換方式の認証で接続をしています。 今回、新しいPCを購入して、そこからも同じように鍵交換方式の認証を試みようと思います。 この場合、新しいPCに現在使っている秘密鍵をそのままぶち込んで使えるものなのでしょうか? 現在使っている秘密鍵には MAC:A1B3DSt.CD... のような記述があるので、これはMACアドレスかなぁと思って、もしかして違うクライアントマシンからでは認証されないのかなと思いました。この辺お分かりでしたら教えてください。宜しくご教授お願い致します。

  • 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での公開鍵認証接続時のログイン画面

    CentOSクライアントからのCentOSサーバへ公開鍵認証によるSSH接続をしたいと思っています。公開鍵認証なのでパスワードではなくパスフレーズでの認証ができるようにしたいです。 しかし、設定操作を一通りやってクライアントからサーバへログインしようとすると添付画像のとおり「パスワード」と書かれたログイン画面が出てきます。 一応パスフレーズとして設定した文字列を入力しないとログインできないようにはなってるのですが、これはちゃんと公開鍵認証ができるようになっているのでしょうか。また、ログイン時に入力した文字列はパスワードではなくパスフレーズとして登録されているのでしょうか。 以下、環境/前提条件および操作手順の詳細です。 ■環境/前提条件 ・OSは両方ともCentOS6.5 ・OpenSSHのバージョンは両方とも5.3 ・仮にサーバ側のホスト名をtestserver、その中にあるユーザー名をtest1とする ■操作手順 (1)クライアント側でssh-keygenでid_rsaとid_rsa.pubをローカルに作成し、パスフレーズを登録。 (2)サーバ側で  .ssh/authorized_keysを作成し、   chmod 700 .ssh  chmod 600 .ssh/authorized_keys  を実行 (3)クライアント側で以下のコマンドを打ち公開鍵ファイルをサーバへ転送  cat .ssh/id_rsa.pub |ssh test1@testserver 'cat >>  .ssh/authorized_keys' (4)両マシーン共再起動させた後、クライアントからサーバへ   ssh test1@testserver  でログインしようとしたら添付画像が出てきた。 パスワード欄にはtest1@testserverのパスワードではなく、(1)で登録したパスフレーズを入力しないとログインできないようになっているが、 このログイン画面に書かれてるのがパスフレーズではなくパスワードとなっているのが気がかりです(パスフレーズとして認識されていない?) これはちゃんと公開鍵認証ができるようになっているのでしょうか。また、ログイン時に入力した文字列はパスワードではなくパスフレーズとして登録されているのでしょうか。 目標が達成できていなければ、問題点および解決策を教えてくださいますようお願いします。