web-dev-qa-db-ja.com

接続に失敗しました。使い果たされた利用可能な認証方法

SFTPを使用して展開構成を追加しようとしていますが、次のエラーが発生します。

Connectionx.x.x.xfailed. Exhausted available authentication methodsOpenSSH構成と認証エージェントを使用しています。

RubyMineのターミナル内のsshエージェントを確認したところ、複数のインスタンスが実行されていることがわかりました。

$ ps -ef | grep ssh-agent                                                                                                                                                                                            
  501  9724     1   0 Mon02PM ??         0:00.02 ssh-agent -s
  501 14553     1   0 Mon03PM ??         0:00.02 ssh-agent -s
  501 15132     1   0 Mon03PM ??         0:00.01 ssh-agent -s
  501 16276     1   0 Mon04PM ??         0:00.00 ssh-agent -s
  501 16759     1   0 Mon04PM ??         0:00.01 ssh-agent -s
  501 27662     1   0  6:40PM ??         0:00.01 ssh-agent -s
  501 31227     1   0 10:48AM ??         0:00.01 ssh-agent -s
  501 54740     1   0  4:03PM ??         0:00.01 ssh-agent -s
  501 64837     1   0  6:30PM ??         0:00.01 /usr/bin/ssh-agent
  501 66822     1   0  6:35PM ??         0:00.01 ssh-agent -s
  501 67155 61559   0  6:36PM ttys002    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn ssh-agent

また、実際にサーバーにSSH接続することもできますssh [email protected]rubyMineのターミナル内

注:ssh-agentを使用するたびに、新しいインスタンスを開始する必要がありました。RubyMineは実行中のssh-agentにアクセスできないようです。

何か案が?

1
simo

tl; dr IDE(View-> Tool Windows-> Terminal)でターミナルを開き、_ssh-add -l_を実行します。目的のメッセージが表示されない場合公開鍵で、同じ端末で_ssh-add_を実行し、再接続を試みます。それ以外の場合は、さらに詳しく調べてみましょう。


検索でこの答えを見つけたすべての人への説明:

_Exhausted available authentication methods_は、SSHクライアントがすべての可能な認証方法を試行し、誰も成功しなかったことを意味します。パスワードが間違っている、公開鍵が間違っている、または存在しない、Kerberosチケットが存在しないなどの可能性があります。あるいは、さまざまな組み合わせですべてが一緒になっている可能性があります。

_idea.log_を開いて、このエラーメッセージを検索できます。メッセージの上に、接続オプション、SSHエージェントからフェッチされた公開キー、ssh_configからロードされた公開キー、SSHエージェントソケットへのパス、試行された認証方法、およびそれぞれに対するサーバーの反応を含む大きなログメッセージが表示されます。


この特定のケースについての私の考え:

大まかに言って、SSH-agentは、暗号化されていない秘密鍵用のメモリ内のKey-Valueストレージです。他のほとんどのメモリ内ストレージと同様に、データベースプロセスが異なれば、保存されるデータも異なり、接続用のソケットも異なります。

起動されたSSHエージェントの多くは疑わしいようです。公開鍵が一部のエージェントに追加された可能性がありますが、IDEは別のSSHエージェントを使用しようとしました。

UNIXライクなシステムでは、SSHエージェントはUNIXソケットで新しい接続をリッスンし、そのソケットへのパスは常に環境変数_SSH_AUTH_SOCK_に格納する必要があります。したがって、コマンド_echo $SSH_AUTH_SOCK_が、sshツールを使用してサーバーに正常に接続できる共通端末、およびIDE内の端末で実行するときに、同じソケットへのパスを表示することを確認してください。


UPD:

注:ssh-agentを使用するたびに、新しいインスタンスを開始する必要がありました。RubyMineは実行中のssh-agentにアクセスできないようです。

はい、IDEは新しいSSHエージェントを認識できません。また、すでに起動している他のすべてのアプリケーションではほとんど不可能です。コマンドeval $(ssh-agent)でエージェントを起動すると、現在のシェルプロセスに対してのみ環境変数_SSH_AUTH_SOCK_を設定しますが、他のすべてのプロセスは引き続き古い値を保持します。

SSHエージェントは、暗号化されたキーを1回だけデコードし、それらを何度も使用するために考案されました。すべてのSSH接続の前に新しいSSHエージェントを開始した場合、その利点は得られません。

[[ -n "$SSH_AUTH_SOCK" ]] || eval $(ssh-agent)のようなものを_~/.bashrc_に追加することをお勧めします。ログインすると、単一のSSHエージェントが起動します。

2
werehuman

私はこの問題を、以下で生成されたルビミン用の特定の2048ビットsshキーを使用して解決しました。

ssh-keygen -t rsa -b 2048 -C "jetbrain specific"

私の4096ビットのsshキーはjetbrainツールでは機能しないようです(エラー: 'publickey by com.intellij.ssh.impl.sshj.PlatformAuthPublickey(path =/home/yolo/.ssh/id_rsa {、。pub}}(無効キー)')。

このコメント 私をこの解決策に導きます。

0
Raphaël

werehuman回答のおかげで、私の場合の最終的な回答につながります。idea.logでは、キー.ssh/id_rsaのみが使用されていることがわかりました。この問題を解決するために、 ~/.ssh/configは、ホスト名を使用してサーバーを識別し、適切なssh秘密鍵を次のように明示的に設定します。

   Host my_server
          Hostname x.x.x.x
          User ubuntu
          IdentityFile ~/.ssh/the_proper_key.pem

次に、RubyMineで、IPアドレスの代わりにmy_serverをホストとして使用しました。これが誰かの助けになることを願っています。

0
simo