SSH公開キーはサーバーに送信されません


33

私はこれに数時間苦労していますので、どんな助けも大歓迎です...

私はsshOSXからの公開鍵で両方にできる2xサーバーを持っていますが、そこにはまったく問題がないので、すべてがうまくいくと確信していますsshd_config

rsync2台のサーバーを同期するためにcronジョブを構成しようとしていますがssh、公開キーを使用してサーバーBにサーバーB(バックアップ)が必要です。

私の人生では、公開鍵が見つからない理由を解決することはできません-それらは~/.ssh/(つまり/root/.ssh)にあり、すべてのファイル許可はA&Bで正しいです

これは出力です:

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

また、存在しない秘密鍵を探していることに注意してください...

drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root  403 May 25 01:37 authorized_keys
-rw-------. 1 root root    0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root  405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root  395 May 25 02:36 known_hosts

2
私たちの出力お願いls -la /root/.ssh/
mreithub

@mreithub迅速な返信をありがとう-上に追加。
ダニー

3
_tm1キーファイル名から削除してみてください(mv id_rsa_tm1 id_rsaおよびmv id_rsa_tm1.pub id_rsa.pub
mreithub

@mreithubうまくいきました!どうもありがとうございます。しかし、ファイル名に他の文字列を追加できない理由がわかりません。iMacで問題なくサーバーに接続します。つまり、id_rsa.tm1.imac.pubを問題なく使用できます。複数のキーが必要な場合はどうなりますか?
ダニー

回答:


22

sshのmanページをご覧ください:

   -i identity_file
          Selects a file from which the identity (private key) for public
          key authentication is read.  The default is ~/.ssh/identity for
          protocol   version   1,   and  ~/.ssh/id_dsa,  ~/.ssh/id_ecdsa,
          ~/.ssh/id_ed25519 and ~/.ssh/id_rsa  for  protocol  version  2.
          Identity files may also be specified on a per-host basis in the
          configuration file.  It is possible to have multiple -i options
          (and  multiple  identities  specified  in configuration files).

またはssh_configのマニュアルページ:

   IdentityFile
          Specifies a file from which the user's DSA, ECDSA,  ED25519  or
          RSA   authentication   identity   is   read.   The  default  is
          ~/.ssh/identity for  protocol  version  1,  and  ~/.ssh/id_dsa,
          ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for proto‐
          col version 2.  Additionally, any identities represented by the
          authentication  agent  will  be  used for authentication unless
          IdentitiesOnly is set.

キーを指定しない場合に試行されるいくつかの特別なファイル名があります。これらは、ログ出力に表示されるファイルでもあります。

別の名前のファイルでキーを使用するには、3つのオプションがあります。

  • 上記の-iオプションを使用してファイルを明示的に指定します。
  • 上記のIdentityFileオプションを使用して、クライアント構成でファイルを構成します。
  • を使用してエージェントにキーを追加しますssh-add

対話型セッションでは、エージェントが最も柔軟です。cronジョブで-iは、おそらくこのオプションが最も簡単です。


26

宛先ホスト上の不正なauthorized_keysファイルは、sshが「パケットを送信しませんでした」というメッセージを出力し、pubkey authを使用する代わりにパスワードを要求するもう1つの理由です。

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method

この特定の場合の問題は.ssh/authorized_keys、宛先ホストに貼り付けられた公開鍵データの最初の文字が欠落していることでした。

sh-rsa AAAA...

解決策は、欠落している「s」を単に追加することでした。

ssh-rsa AAAA...

など:-

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
...
debug1: Authentication succeeded (publickey).

2
ありがとうございます。このエラーが発生するたびに、リモートホスト(サーバー)のauthorized_keysファイルの形式が正しくないためです。私は、エラーがクライアントに問題があるように聞こえないことを望みます。
タマーレ

3
最初に「i」を押さずにvimに貼り付けます!
ジョーダンデビッドソン

私にとっては、それは不正な形式のようには見えませんでしたが、ファイルを削除し、ソースマシンからssh-copy-idを再度実行して再作成しました。問題が解決しました。
アルバレス

14

質問内のエラーメッセージのこの正確な文字列は、ローカル側でミスマッチした秘密/公開キーペアの場合にも発生する可能性があります。いいえ、それは意味をなしませんが、何が起こっているのかを理解しようとして長い間髪を引き裂いていました。

  • リモートシステムA .ssh/mykey.pubはにコピーしました.ssh/authorized_keys
  • ローカルシステムBには.ssh/mykey、システムAの公開キーに一致する正しい秘密キーがあり.ssh/mykey.pubますが、ミスマッチのファイル、おそらく以前のバージョンの置換キーもあります。

BからA(ssh -i mykey A)へのSSH は、質問のメッセージで失敗します。最も顕著なのは、表示さ-vvれるsshクライアントからオンにした場合です。

秘密鍵の試行:
パケットを送信しなかった.ssh / mykey 、メソッドを無効にします

実際のキーは試行されなかったため、これは嘘です。明らかに、一致する名前を持つローカル公開キーファイルを使用して、動作する可能性があるかどうかを判断し、不一致の場合は実際には何もしませんでした。どちらの側のデバッグ情報も、問題をほのめかすものではありません。


うわー!これは私にとってもかなりの時間を殺しました!髪を失った!したがって、私の場合もこれでした。私のsshdホストにはないname @ hostエントリが最後に含まれていたのを除いて、私のpubキーのみが実際にクライアント側のauthorized_keysファイルにありました。両端でauthorized_keysを一致させる必要があることに気づきませんでした。実際、これまで一致したことはないと思います。これは、私のクライアントがUbuntu 12.04に接続しているCentOS 7の場合にのみ問題でした。MacOSや他のUbuntuシステムからの移行は問題なく機能しました。
gregthegeek

それでは、この問題をどのように修正しますか?あなたは私の問題をTに説明しました。私の問題はさらに悪化しています。なぜなら、私は多くのシステム間を飛び回っているからです。実際にファイルを指定すると、私のために働いていない
Madivad

@Madivad公開/秘密鍵をローカルで一致させることで問題を修正します(または公開鍵をまったく使用しません)。
カレブ

@Calebそれは、SSHクライアントとして使用したい各システムに公開鍵と秘密鍵の両方をコピーする必要があることを意味している場合を除き、それよりも簡単に聞こえますか?私はIdentityFileに作成しようとしましたが、私は明らかに間違っている、それを使用しています
Madivad

クライアントで孤立したid_rsa.pubファイルを削除すると、これが解決しました。Ubuntu 12.04サーバーに接続する新しいCentos 7クライアントで、この問題に再び出くわしました。authorized_keys name @ hostの問題は修正されていません。ディレクトリ、権限、まったく同じid_rsaキーファイルを照合しましたが、余分なid_rsa.pub(クライアント側)がありました。削除され、機能するようになりました。ディレクトリをすばやく作成するためにssh-keygenを実行してから、既知の正常なシステムからrsyncを実行しました。しかし、それにより、秘密鍵に一致しない余分なpubファイルが残りました(ソースrsyncにはありませんでした)。確認のため、一致しないpubファイルを再度追加しました。必ず一致または削除してください。
-gregthegeek

5

sshが検索するデフォルトのファイル名はid_rsaand id_rsa.pubです。

他のファイル名を使用する場合は、ssh_configIdentityFile設定を使用して)またはssh コマンドライン パラメーターで指定する必要があります-i


4

RedHatでも同じ問題が発生しました。ログをチェックし、ホームディレクトリに誤ったユーザー権限があることがわかりました。

sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user

ホームディレクトリの権限を修正することでこれを解決しました。


4
U + L Stack Exchangeサイトへようこそ。正しい許可がどのように見えるべきかの例を提供することにより、他の人にとってあなたの答えをより役立つものにすることができます。
エラティエル

~/.sshdir を除いて、非常によく似た問題がありました。少なくとも~/.sshアクセス許可が0775のFedora 28では、公開/秘密キーで接続できませんでした。だから私は許可を0755に変更し、魔法のように働いた:)
PovilasB

3

Debian / Ubuntuでデバッグする簡単な方法は次のとおりです。パスワードを使用して接続し、ログを追跡する

tail -f /var/log/auth.log

他の端末から接続しようとすると、エラーが表示されます...

私の場合、/ rootディレクトリはデフォルトである700ではなく770でした。エラーは「認証が拒否されました:ディレクトリ/ rootの所有権またはモードが不正です」

これを修正すれば完了です。


ありがとうございます!あなたは私の一日を救った!
アンソニー

それはそれを明確にするのに役立ちました。私は、AllowUsersにリストされていないため、123.123.123.123のユーザーsuchandsuchは許可されていないと言っていました。どうもありがとうございます!
aexl


0

走った後

ssh-copy-id user@remote-host

通常は動作するはずです。しかし、失敗した場合は、これを試してください:将来ログインするユーザーとしてリモートホストにログインし、実行してください:

ssh-keygen

助けてくれました。


0

だから私に起こったことは、ローカルマシンからアクセスする2つのVMがあることです(2つのキーid_rsa.pubとid_rsa2.pub)。私のssh接続は、すべてのssh user@xx.xx.xx.xx接続にデフォルトでid_rsa.pubを使用していることに気付きました。構成ファイルを追加し、次のようにすべてのホストに使用するIDを指定することで問題を解決しました。

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2

-2

クライアント:

vim /etc/ssh/ssh_config

#add your key 
IdentityFile ~/.ssh/yourkey

service sshd restart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.