ssh - 连接失败。用尽了可用的身份验证方法

标签 ssh ftp sftp ssh-agent rubymine-7

我正在尝试使用 SFTP 添加部署配置,但是,我收到此错误:
Connection x.x.x.x failed. 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 ubuntu@x.x.x.x rubyMine 的终端内部

注意:每次我使用 ssh-agent 时,我都必须启动一个新实例,似乎 RubyMine 无法访问正在运行的 ssh-agent

任何的想法?

最佳答案

tl;博士在 IDE 中打开一个终端(查看 -> 工具窗口 -> 终端)并运行 ssh-add -l .如果您没有看到所需的公钥,请运行 ssh-add在同一个终端中并尝试再次连接。否则,让我们更深入地调查。

通过搜索找到此答案的每个人的解释:
Exhausted available authentication methods表示 SSH 客户端尝试了所有可能的身份验证方法,但没有一个成功。可能是密码错误、公钥错误或缺失、Kerberos 票证缺失等,也可能是各种组合的所有内容。

您可以打开idea.log并搜索此错误消息。在消息上方,您将看到一条大日志消息,其中包含连接选项、从 SSH 代理获取的公钥、从 ssh_config 加载的公钥、SSH 代理套接字的路径、尝试了哪些身份验证方法以及服务器对它们的 react 。

我对这个特殊情况的想法:

粗略地说,SSH-agent 是一种用于未加密私钥的内存键值存储。与大多数其他内存存储一样,不同的数据库进程将具有不同的存储数据和不同的连接套接字。

许多启动的 SSH 代理看起来很可疑。有可能将公钥添加到某个代理中,但 IDE 尝试使用另一个 SSH 代理。

在类 unix 系统上,SSH-agent 监听 unix 套接字上的新连接,并且该套接字的路径始终应存储在环境变量 SSH_AUTH_SOCK 中.所以确保命令 echo $SSH_AUTH_SOCK当你在一个普通终端中运行它时,它会显示到同一个套接字的路径,在那里你可以使用 ssh 成功连接到服务器工具,并在 IDE 内的终端中。

升级版:

note: each I time I use ssh-agent, I had to start a new instance, it seems that RubyMine is un-able to access a running ssh-agent



是的,IDE 看不到新的 SSH 代理。对于已经启动的所有其他应用程序来说,这几乎是不可能的。当您使用命令 eval $(ssh-agent) 启动代理时,它设置环境变量SSH_AUTH_SOCK仅适用于当前的 shell 进程,但所有其他进程仍保留旧值。

SSH 代理被发明用于仅对加密 key 进行一次解码并多次使用它们。如果您在每次 SSH 连接之前都启动了一个新的 SSH 代理,您将不会获得它的好处。

我建议添加类似 [[ -n "$SSH_AUTH_SOCK" ]] || eval $(ssh-agent) 的内容给您的~/.bashrc .当您登录时,它将启动一个 SSH 代理。

关于ssh - 连接失败。用尽了可用的身份验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59271876/

相关文章:

php - 从带有路径列表的FTP服务器下载文件并下载列出的每个文件

java - Apache Camel FTP 错误

linux - 如何将文件从远程机器传输到我的电脑

windows - 我可以通过 ssh 连接到 Windows,启动命令并让它在我注销时运行吗?

ssh - SSH 时, channel 0 上的 PTY 分配请求失败

batch-file - 从包含两个独立模式的 FTP 服务器下载多个文件

java - 具有 sftp 图像的测试容器在 "nc not found"或 "Address Not Available"上抛出错误

linux - 如何从脚本添加/替换命令到 SSH 公钥的末尾?

linux - 有没有办法在任何 SSH 连接/断开连接上运行脚本?

java - 上传图片在服务器上损坏