无法使用Elixir连接到远程SSH服务器

sva*_*let 4 ssh elixir erlang-otp

我一直试图用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)>
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么 ?更重要的是,我怎样才能在下次找到解决这个问题的方法?

[固定]有多个问题.首先,必须在单引号之间提供服务器.然后确保您的公钥不需要密码.如果是,则可以将其作为选项传递给connect函数.此外,没有必要启动我开始的所有应用程序.:ssh.start是我唯一需要的人.

Eri*_*son 5

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

  • 嘿伙计们,我找到了问题所在。我已经很久没有被要求提供我的密码(公钥认证)了,我以为我没有为它定义一个。我发现我做到了,并将其提供给连接调用的选项使其工作。然而,当连接尝试失败时,获得更多关于我们得到的错误的详细信息会很好。我本可以更早地独自解决这个问题。也许已经有一种我不知道的方法? (2认同)