プロが教える店舗&オフィスのセキュリティ対策術

公開鍵方式でリモートサーバーにsshでログインする場合、パスワードを求められる場合と求められない場合があります。

例えば、サーバーAとサーバーBがあって、
サーバーBのauthorized_keysにサーバーAの公開鍵を登録して、サーバーAからサーバーBにアクセした場合、パスワード入力なしでsshログイン出来ます。

しかしながら、サーバーBの秘密鍵をサーバーAの~/.sshの中において、サーバーAからサーバーBにアクセスした場合、パスワード入力が求められました。

公開鍵方式でssh接続する場合、どういった時に求めら、どういった時に求められないのでしょうか?

ちなみに、サーバAとサーバーBで作った鍵の違いはrsaかdsaの違いとファイル名称の違いくらいです。

もしご存知の方がいましたら教えていただけると助かります。

宜しくお願いします。

A 回答 (2件)

>しかしながら、サーバーBの秘密鍵をサーバーAの~/.sshの中において、サーバーAからサーバーBにアクセスした場合、パスワード入力が求められました。



これは公開鍵認証になっていないのでは?
接続先のサーバに設定するのは「公開鍵」の方ですよ?
秘密鍵は手元(クライアント)側です。

あと…認証に使用したのは対象のサーバのアカウントに設定したパスワードですか?
それとも使用した秘密鍵のパスフレーズですか?
前者ならパスワード認証されたことになります。後者のみなら公開鍵認証ですね。
まぁ…いずれにしても接続先のサーバのログにどの認証方式だったのか記録されていると思いますが。
CentOS 6.x/7.xの/var/log/secureで……
Feb 9 22:59:33 localhost1 sshd[6156]: Accepted publickey for User from 192.168.1.4 port 59520 ssh2
Feb 9 22:58:27 localhost2 sshd[1453]: Accepted password for User from 192.168.1.4 port 59500 ssh2
前者が公開鍵認証、後者がパスワード認証です。
# ホスト名とユーザ名は書き換えてますけど。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
下記、リプライいたします。
--------------------------------------------------
>これは公開鍵認証になっていないのでは?
>接続先のサーバに設定するのは「公開鍵」の方ですよ?
>秘密鍵は手元(クライアント)側です。

今回、サーバーAとサーバーBがあり、
①サーバーAからサーバーBに接続するパターン
②サーバーBからサーバーAに接続するパターン
があります。

そして、
①の場合は、サーバーBにサーバーAの公開鍵を設置
②の場合は、サーバーAにサーバーBの秘密鍵を設置
しております。

そのため、常に接続元に秘密鍵があり接続先に公開鍵があることになります。

この関係性があるにもかかわらずパスワードが求められてしまっているのが、よくわからないのです、、、

>あと…認証に使用したのは対象のサーバのアカウントに設定したパスワードですか?
>それとも使用した秘密鍵のパスフレーズですか?
>前者ならパスワード認証されたことになります。後者のみなら公開鍵認証ですね。

後者です。
なので公開鍵認証のはずです。

>まぁ…いずれにしても接続先のサーバのログにどの認証方式だったのか記録されていると思いますが。

権限の関係で、それらのログを確認することができないんですよね、、、
--------------------------------------------------

もし、上記の内容も踏まえて、さらに伝えられることがありましたら、宜しくお願いします。

お礼日時:2016/02/10 08:33

サーバA、サーバBと言っているから判り難くなっているような?



>①サーバーAからサーバーBに接続するパターン
>①の場合は、サーバーBにサーバーAの公開鍵を設置

クライアント(サーバA)からサーバ(サーバB)に接続します。
サーバにはクライアントで作成した公開鍵を設定した。

>②サーバーBからサーバーAに接続するパターン
>②の場合は、サーバーAにサーバーBの秘密鍵を設置

クライアント(サーバB)からサーバ(サーバA)に接続します。
サーバで作成した秘密鍵をクライアントにコピーしました。
では、サーバAへの公開鍵の登録は?


ちなみに、公開鍵と秘密鍵のペアの作成はクライアント側でやった方がいいです。
# 必要なクライアントに秘密鍵をコピーした後でサーバに残っている秘密鍵を削除するのならば問題はありませんが…。
# 乗っ取られた後でファイル復元されなければ…ですけど。

>後者です。
>なので公開鍵認証のはずです。

パスフレーズとパスワードに別々のものを設定していれば確定でしょうね。
もっとも、
>①サーバーAからサーバーBに接続するパターン
>①の場合は、サーバーBにサーバーAの公開鍵を設置
の時にも秘密鍵のパスフレーズ入力があったハズですが…。

ただし、keychainとssh-agentがサーバAで動作していたとしたら
起動時(ログイン時?)の最初の1回にパスフレーズ入力するだけで記憶してくれていることになりますが。

>権限の関係で、それらのログを確認することができないんですよね、、、

sshコマンド実行時に-vオプション付けることでなんか見られる…かも知れません。(未検証)
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
------------------------------------------------
> では、サーバAへの公開鍵の登録は?

→こちら行っております。

------------------------------------------------
> もっとも、
> >①サーバーAからサーバーBに接続するパターン
> >①の場合は、サーバーBにサーバーAの公開鍵を設置
> の時にも秘密鍵のパスフレーズ入力があったハズですが…。

→それがなかったんですよね、、、不思議です、、、

------------------------------------------------
> ただし、keychainとssh-agentがサーバAで動作していたとしたら
> 起動時(ログイン時?)の最初の1回にパスフレーズ入力するだけで記憶してくれていることになりますが。

→こちら、今度、確認してみますが、①のケースだと1回もパスワードを入力しなくてもろぐいんできたんですよね、、、
------------------------------------------------

お礼日時:2016/02/11 11:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!