我一直在尝试使用 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应用程序。我尝试了连接,但是仍然出现了相同的错误。
我做错了什么?更重要的是,下次我如何找到解决这类问题的方法?
[已修复]存在多个问题。首先,服务器必须在单引号之间提供。然后确保您的公钥不需要密码。如果需要,则可以将其作为选项传递给connect函数。此外,并不需要启动我启动的所有应用程序。只需要
:ssh.start
就行了。