【问题标题】:Not able to connect to a remote SSH server with Elixir无法使用 Elixir 连接到远程 SSH 服务器
【发布时间】:2015-10-09 00:23:04
【问题描述】:

我一直在尝试使用 elixir 连接到远程 ssh 服务器。

这就是我在 IEX 中所做的:

[Macintosh] elixir/logglycious (master|…)> iex                                                                            15-07-20 0:11
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (1.0.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :application.start(:crypto)
{:error, {:already_started, :crypto}}
iex(2)> :application.start(:public_key)
{:error, {:not_started, :asn1}}
iex(3)> :application.start(:asn1)
:ok
iex(4)> :application.start(:public_key)
:ok
iex(5)> :application.start(:ssl)
:ok
iex(6)> :application.start(:ssh)
:ok
iex(7)> :ssh.connect("my.server.co.uk", 22, [ { :user, 'my_username' } ])
{:error, {:options, {:socket_options, [:inet]}}}
iex(8)>

首先,我必须说这个错误消息根本没有帮助。不过,我在 Slack 上得到了社区的大力支持。也有人建议启动 inets 应用程序。我做了并尝试连接,但我又遇到了同样的错误。

我做错了什么?更重要的是,下次遇到这样的问题怎么解决?

[已修复] 存在多个问题。首先必须在单引号之间提供服务器。然后确保您的公钥不需要密码。如果是这样,它可以作为一个选项传递给连接函数。此外,不必启动我启动的所有应用程序。 :ssh.start是我唯一需要的。

【问题讨论】:

  • 我建议一件事——从现在开始,当您报告此类问题时,请确保您在最新的稳定版本上对其进行测试。 1.0.5。是 Elixir 的最新稳定版本(与 Erlang 18 一样),这可能会对您收到的错误消息产生影响。
  • 感谢您的推荐。我在 elixir 1.0.4 上运行。但是我升级到 1.0.5 并收到相同的错误消息。
  • 注意我使用了may这个词:)

标签: ssh elixir erlang-otp


【解决方案1】:

如果我们查看:ssh.connect/3 的文档,我们会发现host 参数应该是一个字符串。由于它是 erlang 函数的文档,因此字符串表示字符列表。单引号创建 charlist 字符串,双引号创建 utf-8 编码的二进制字符串。改为这样调用函数::ssh.connect('my.server.co.uk', 22, user: 'my_username')

【讨论】:

  • 确实,它现在稍微好一点了。它仍然不起作用,但现在有另一个原因:{:error, 'Unable to connect using the available authentication methods'}
  • @svarlet 你能通过ssh 命令行工具连接到服务器吗?当您设法做到这一点时,请与我们分享通过的选项,我们将尝试翻译它们。
  • 您也可以使用String.to_char_list/1 将二进制转换为字符列表
  • 大家好,我找到了问题所在。很长一段时间以来,我都没有被要求输入我的密码(公钥认证),以至于我以为我没有为它定义一个密码。我发现我做到了,并将它提供给连接调用的选项使其工作。但是,如果我们在连接尝试失败时获得更多关于错误的详细信息,那就太好了。我本可以更早地独自想到这一点。或许已经有我不知道的方法了?
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 2022-07-11
  • 2020-06-17
  • 2019-08-01
  • 2021-05-18
  • 2020-07-05
相关资源
最近更新 更多