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

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

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

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

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

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

宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

サーバ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

>しかしながら、サーバー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

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSSHのパスワード無し認証(公開鍵暗号方式)

過去ログに似た質問がいくつかあり、それらを参考にしましたが、何故か私の環境では上手く行かないので、何が原因なのか、どうすればよいのか、どなたか教えて頂けると嬉しく思います。

■やりたいこと
・SSHでパスワード無しログイン

■環境条件
・ローカルマシン(接続元)
  VineLinux 3.1
・ホストマシン(接続先)
  VineLinux 3.1
・両方のマシンに同じユーザ(hikaly)があり、ログインパスワードは同じものになっている。

■手順

ローカルマシンにhikalyでログインし、
$ ssh-keygen -t rsa -N ""
でパスフレーズ無しの鍵を作成する。

/home/hikaly/.ssh/id_rsa.pub というファイルを、ホストの /home/hikaly/.ssh/ にコピー。この際、WinSCP3を使って、ローカル→作業用Windowsマシン→ホスト とコピーを行いました。

ホストの /home/hikaly/.ssh/ には authorized_keys が存在しなかったので、コピーした rsa_id.pub を authorized_keys に改名。

ホスト側で root になって sshd_config を編集。
RSAAuthenticationを「yes」にして保存。sshdを再起動させました。

■結果

これでローカル側からホスト側にパスワード無しで接続できるはずだと思いますが、
hikaly@hostmachine's password:
とパスワードを尋ねられてしまいます。

いろいろとググッて調べてみたところ、「接続先(ホスト側)でssh-keygenしてできたrsa_id.pubを接続元(ローカル側)にコピーせよ。」と読める資料を見つけましたが、多くのものは「接続元でssh-keygenして接続先にコピーせよ。」と書かれています。ワケ分からなくなってきました。(;´ρ`)

私の質問もややこしくてワケ分からなくてすいません。

過去ログに似た質問がいくつかあり、それらを参考にしましたが、何故か私の環境では上手く行かないので、何が原因なのか、どうすればよいのか、どなたか教えて頂けると嬉しく思います。

■やりたいこと
・SSHでパスワード無しログイン

■環境条件
・ローカルマシン(接続元)
  VineLinux 3.1
・ホストマシン(接続先)
  VineLinux 3.1
・両方のマシンに同じユーザ(hikaly)があり、ログインパスワードは同じものになっている。

■手順

ローカルマシンにhikalyでログインし、
$ ssh-keygen ...続きを読む

Aベストアンサー

リモートのsshdを止めたくないんですね。
オーケー、そんなときは違うポートを使ってテストしよう。リモートで、以下のコマンドでデバッグモードのsshdを立ち上げる。
その前に、使われてないポートのチェックだ。
/etc/servicesによれば 122 は空いてるようだが、netstatを使って確認してみる。
$ netstat -ln
LISTEN されてなければOK。

sshd をデバッグモードで起動する。
# /usr/sbin/sshd -D -e -d -d -d -p 122 -f /etc/ssh/sshd_config

netstat で見てみると 122 がLISTEN されてる。
こいつがデバッグモードのsshdだ。

さて、ローカルからリモートへsshしてみよう。

$ ssh -p 122 user@remotehost

これでばっちりログが取れるので、問題解決まであと少しだっ。

#8 さんが整理してくれたおかげで、やっと問題が理解できました。thx

QSSHにログインする際、公開暗号鍵方式にするにはどうしたらよいでしょうか

わたしはSSHクライアントにPuTTYを使っています。
よろしくお願いします。

Aベストアンサー

こんばんわぁ、Blackwinglsです。


> Server refused our key

とのことですが、~/.ssh/authority_keys のアクセス権は600に設定されてますか?
No5を見直していたら私の方で間違っていました。(^-^;
user@debian:~/ chmod 600 /root/.ssh/authorized_keys //パーミッション設定

user@debian:~/ chmod 600 authorized_keys //パーミッション設定
が正解です。
あと ~/.ssh のアクセス権はどうなっていますでしょうか?
自動生成ならタブン問題ないと思いますが、ご自分で作ったならアクセス権の確認。
700になっていないといけませんよ。

ここまで確認しても上手くいかない時は、PuTTYgen をもう一度やってみる。
generated key が、1024bit 以外も試してみる。例えば、768bit とか・・

それでもダメな時は、rootアカウントが使えるんであれば、テストユーザーを作成してNo5、No6の手順でもう一度最初からやってみる。

思いつくのはこんなところでしょうか・・・・・

タブン、アクセス権あたりが怪しいとは思うのですが、ダメな時はディストリビューション名、OpenSSHのバージョン、Puttyのバージョン、パッチ状況、PuTTYgen のバージョン等を補足願います。


ではでは~☆ミ


ps 上手くいったら、パスワードログインを無効に設定しないと意味なしです(^-^;

こんばんわぁ、Blackwinglsです。


> Server refused our key

とのことですが、~/.ssh/authority_keys のアクセス権は600に設定されてますか?
No5を見直していたら私の方で間違っていました。(^-^;
user@debian:~/ chmod 600 /root/.ssh/authorized_keys //パーミッション設定

user@debian:~/ chmod 600 authorized_keys //パーミッション設定
が正解です。
あと ~/.ssh のアクセス権はどうなっていますでしょうか?
自動生成ならタブン問題ないと思いますが、ご自分で作ったならアクセス権の...続きを読む

QSSH公開鍵認証はパスワードを変更すると認証できなくなりますか?

SSH公開鍵で、認証できていたのですが、
ログイン先のパスワードを変更すると認証できなくなりました。
これはSSHの仕様でしょうか?

又、nologinではなく、ユーザー作成時にパスワード未設定とし、
パスワードではログインできない状態に戻したいのですが
一度パスワードを設定してしまうと不可能でしょうか?

Aベストアンサー

>SSH公開鍵認証はパスワードを変更すると認証できなくなりますか?

なりません。

QRedHatでDSA公開鍵認証ができません。。

RedHatEL4.0で下記手順で公開鍵を置いても
ServerAからServerBへのログインが、
パスワード認証となってしまいます(><)

1.ServerA,ServerBで、
同じ名前のユーザーを作りパスワードを設定しました。

2.ServerAでの作業
#ssh-keygen -t dsa
#scp id_dsa.pub hoge@serverB:/home/hoge/.ssh/authorized_keys
#ssh hoge@ServerB
#known_hostに関してのプロンプトに、yesで答える
ここで、公開鍵をServerBに設置したので、
パスワードなしでログイン完了!と期待していたのですが、
hogeユーザーのパスワード入力が聞かれてしまいます。。

原因は何でしょうか?

又、公開鍵認証でパスワードなしでログインするには、
同一ユーザー同一グループである必要があるのでしょうか?

Aベストアンサー

こんにちは。
公開鍵名(+α:permission)の問題かと思います。
「id_dsa.pub」は version2 なので公開鍵名は「authorized_keys2」です。
hoge> scp id_dsa.pub serverB:/home/hoge/.ssh/authorized_keys2

ついでに permission は一例として以下のようにします。
drwx------ 2 hoge hoge 4096 Aug 11 2006 .ssh
-rw------- 1 hoge hoge 603 Aug 11 2006 .ssh/authorized_keys2

これでいけるかと思います。
hoge> ssh ServerB

因みにご質問本文にあった下記ラインの引数は scp の構文です。
#ssh hoge@ServerB

この場合、hoge 以外のユーザが実行するにはこうなります。
another> ssh -l hoge ServerB

こんにちは。
公開鍵名(+α:permission)の問題かと思います。
「id_dsa.pub」は version2 なので公開鍵名は「authorized_keys2」です。
hoge> scp id_dsa.pub serverB:/home/hoge/.ssh/authorized_keys2

ついでに permission は一例として以下のようにします。
drwx------ 2 hoge hoge 4096 Aug 11 2006 .ssh
-rw------- 1 hoge hoge 603 Aug 11 2006 .ssh/authorized_keys2

これでいけるかと思います。
hoge> ssh ServerB

因みにご質問本文にあった下記ライ...続きを読む

Qssh公開鍵認証設定の解除について

Linuxで公開鍵、秘密鍵を生成し、ssh公開鍵認証でログインをしているのですが、
公開鍵認証を止めて、sshでのリモートログインに戻すにはどのようにすれば良いのでしょうか?
/etc/ssh/sshd_configの何れかを設定解除すれば良いのでしょうか?
※現設定
Protocol2 ←2が設定されている
PermitRootLogin no ←noに変更
PasswordAuthentication yes ←yesが設定されている

Aベストアンサー

>PasswordAuthentication yes ←yesが設定されている

設定されているならそのままでパスワード認証できませんか?
おそらく、先に公開鍵の認証が走っているのだと思いますが。
クライアント側の設定かと。
~/.ssh/configで公開鍵認証に設定している…とか。

当然ですがサーバ側のアカウントにパスワードが設定されている必要はあるかと。


人気Q&Aランキング

おすすめ情報