web-dev-qa-db-ja.com

SSHがauthorized_keysを尊重しないのはなぜですか?

私は自宅に2台のラップトップを持っており、どちらもUbuntu 12.04(デスクトップ)を実行しており、両方とも同じNetGearWi-Fiルーターを使用しています。いずれかのマシンで「MACバインディング」と呼ばれる手法を使用して、ルーターがインターネットに接続しようとするたびに常に同じ192.168.1.52IPアドレスを割り当てるようにしました。 (無関係:MACバインディングとは、特定のMACアドレスを常に特定のIPにバインドするようにルーターを構成することを意味します。

これで、192.168.1.1から192.168.1.50の範囲のランダムIPが常に割り当てられるラップトップが1つと、常に192.168.1.52が割り当てられるラップトップ(「ビルドサーバー」)が1つあります。

ビルドサーバー(192.169.1.52マシン)にsshする「クライアント」ラップトップ(ランダムIPマシン)で実行するbashスクリプトを作成しようとしています。したがって、ビルドサーバーがLAN内から「専用」IPを持つ必要があります。これらのbashスクリプトにパスワードを明示的に入力する必要はないので、 この記事はこちら の手順に従ってSSHキーを生成しました。具体的には、私は:

  1. クライアントのラップトップでSSHキーを生成します(id_rsa.pubファイルを生成します)
  2. id_rsa.pubファイルをビルドサーバーにscp 'し、~/.ssh/authorized_keysファイルにcat'しました。クライアントラップトップのSSHキーがビルドサーバーのauthorized_keysファイル内に存在することを確認しました。
  3. クライアントのラップトップでターミナルを閉じてから、新しいターミナルを再度開きました(Linuxが何かを再起動するためにそれを必要とする場合など)。
  4. 次に、ビルドサーバーにSSHで接続しようとしましたが、まだパスワードの入力を求められています!

何が起きてる?ビルドサーバーのSSHが、クライアントのラップトップからの承認されたキーを尊重しないのはなぜですか?ビルドサーバー(sshdなど)で何かを再起動する必要がありますか?ここで重要なステップを逃したことがありますか?トラブルシューティングを開始する方法は?前もって感謝します!

Update:どうやらUbuntuには/var/log/secure.logがありませんが、doesには/var/log/auth.logがあります。このログをビルドサーバーで追跡し、クライアントのラップトップからビルドサーバーにSSHで接続しようとすると、次のようになります。

  1. クライアントのラップトップからssh myuser@buildserverを実行します
  2. パスワードの入力を求められます。
  3. パスワードを入力するとすぐに、ビルドサーバーのauth.logファイルに次の出力が表示されます。

May 21 12:02:07 buildserver sshd[28930]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106)
May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: Called
May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: username = [myuser]
May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: /home/myuser is already mounted
May 21 12:02:10 buildserver sshd[28930]: Accepted password for myuser from 192.168.1.3 port 39821 ssh2
May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session opened for user myuser by (uid=0)
May 21 12:02:10 buildserver sshd[29003]: Received disconnect from 192.168.1.3: 11: disconnected by user
May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session closed for user myuser

おそらく私が言及すべきこと:両方のマシン(クライアントラップトップと私のビルドサーバーでは、ユーザー名/アカウント名はmyuser)-両方のマシンで同じユーザー名が原因でLinuxが混乱する可能性がありますか?

3
pnongrata

最初のステップ:/etc/init.d/sshd restartでsshを再起動します。また、authorized_usersファイルの権限が正しいことを確認してください。確認するには、chmod 600 ~/.ssh/authorized_keysを使用して、ログインしているユーザーが所有していることを確認します。

6
Nathan C

私にとっては、id_rsa.pubを削除することが役に立ちました(私は〜/ .ssh/id_rsaキーを使用していました)。これは、id_rsa.pubが私のid_rsaキーと一致しなかったために発生しました。

5
Ernestas

公開鍵はどのような形式ですか?

多くのツールが次のようなキーを生成していることがわかりました。

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "1024-bit RSA, converted from OpenSSH by [email protected]"
AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRb
YYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ
5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE=
---- END SSH2 PUBLIC KEY ----

と私 authorized_keysファイルには常に次のようなキーが含まれていました:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRbYYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE=

(公開鍵はすべて1行に連結されています)

1
Darth Android