SFTPを使用して展開構成を追加しようとしていますが、次のエラーが発生します。
Connection
x.x.x.xfailed. Exhausted available authentication methods
OpenSSH構成と認証エージェントを使用しています。
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にアクセスできないようです。
何か案が?
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エージェントが起動します。
私はこの問題を、以下で生成されたルビミン用の特定の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}}(無効キー)')。
このコメント 私をこの解決策に導きます。
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
をホストとして使用しました。これが誰かの助けになることを願っています。