web-dev-qa-db-ja.com

SSH公開鍵がサーバーに送信されません

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

私は2台のサーバーを使用しており、どちらもOSXからの公開鍵でsshを実行できます。そこにはまったく問題がないので、sshd_config

2つのサーバーを同期するようにrsyncのc​​ronジョブを構成しようとしています。公開キーを使用してサーバーB(バックアップ)からサーバーAにsshする必要があります。

私の人生では、なぜそれが私の公開鍵を見つけられないのか理解できません-それらは~/.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
37
Danny

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のmanページ:

   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オプションがおそらく最も簡単なオプションです。

23
michas

宛先ホストの不正な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).
29
jah

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

  • リモートシステムAは.ssh/mykey.pub.ssh/authorized_keysにコピーしました。
  • ローカルシステムBには、システムAの公開鍵と一致する正しい秘密鍵である.ssh/mykeyがありますが、一致しない.ssh/mykey.pubファイルもあり、以前のバージョンの置き換えられた鍵である可能性があります。

BからAへのSSH(ssh -i mykey A)は問題のメッセージで失敗します。特に、sshクライアントから-vvをオンにすると、次のようになります。

秘密鍵を試す:.ssh/mykey
パケットを送信しませんでした、メソッドを無効にします

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

16
Caleb

Debian/Ubuntuでデバッグする簡単な方法は次のとおりです:パスワードで接続してログをテール

tail -f /var/log/auth.log

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

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

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

5
Dimitrios

Sshが検索するデフォルトのファイル名はid_rsaおよびid_rsa.pubです。

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

5
mreithub

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

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

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

5
skywalkie

試す

/sbin/restorecon -r /root/.ssh

販売コンテキストで起こりうる問題

[今日はこのあいまいなエラーに悩まされたので、「パケットを送信しませんでした、メソッドを無効にしてください」というdebug2メッセージの原因可能のリストに追加します。 ]

(リモートシステム上で)ログインしているアカウントに、(リモートシステム上で)公開鍵ファイルへの読み取りアクセス権がない可能性があります。たとえば、私たちの環境では、/etc/ssh/sshd_configで指定されたカスタムのAuthorizedKeysFileロケーションがあります。

AuthorizedKeysFile /usr/local/etc/ssh_authorized_keys/%u_pub

そして/usr/local/etc/の権限が次のように変更されました:

drwx------. 3 root root 29 Feb 20  2018 /usr/local/etc/

権限を(再)設定することで解決:

drwxr-xr-x. 3 root root 29 Feb 20  2018 /usr/local/etc/
1
ecs-hk

実行した後

ssh-copy-id user@remote-Host

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

ssh-keygen

それは私を助けました。

0
mennanov

つまり、ローカルマシンからアクセスするVMが2つある(id_rsa.pubとid_rsa2.pubの2つのキー)ことです。私のssh接続では、すべてのssh [email protected]接続に対してデフォルトで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
0
Aymen Alsaadi