Erlang:ssh身份验证错误。如何使用标识文件连接到ssh

Erlang:ssh身份验证错误。如何使用标识文件连接到ssh,erlang,elixir,Erlang,Elixir,尝试连接ssh主机时出现身份验证错误 目标是使用本地转发连接到主机。下面的命令是一个使用drop bear ssh客户端通过本地转发连接到主机的示例 dbclient -N -i /opt/private-key-rsa.dropbear -L 2002:1.2.3.4:2006 -p 2002 -l test_user 11.22.33.44 到目前为止,我有这个返回空连接的代码 ip = "11.22.33.44" user = "test_user" port = 2002 ssh_c

尝试连接ssh主机时出现身份验证错误

目标是使用本地转发连接到主机。下面的命令是一个使用drop bear ssh客户端通过本地转发连接到主机的示例

dbclient -N -i /opt/private-key-rsa.dropbear -L 2002:1.2.3.4:2006 -p 2002 -l
test_user 11.22.33.44
到目前为止,我有这个返回空连接的代码

ip = "11.22.33.44"
user = "test_user"
port = 2002

ssh_config = [
  user_interaction: false,
  silently_accept_hosts: true,
  user: String.to_charlist(user),
  user_dir: String.to_charlist("/opt/")
]
# returns aunthentication error
{:ok, conn} = :ssh.connect(String.to_charlist(ip), port, ssh_config)
这就是我看到的错误

Server: 'SSH-2.0-OpenSSH_5.2'
Disconnects with code = 14 [RFC4253 11.1]: Unable to connect using the available authentication methods
State = {userauth,client}
Module = ssh_connection_handler, Line = 893.
Details:
  User auth failed for: "test_user"

我是长生不老药的新手,已经读了两天了。我在文档中没有发现任何难以理解的示例。

您使用的是非默认密钥名,
私钥rsa.dropbear
。默认情况下,Erlang查找这组名称:

发件人:

  • 可选:在公钥授权的情况下,一个或多个用户的私钥。默认文件是
    • id_dsa和id_dsa.pub
    • id_rsa和id_rsa.pub
    • id_ecdsa和id_ecdsa.pub`
要验证这是否是原因,请尝试将
私钥rsa.dropbear
重命名为
id\u rsa
。如果这样做有效,下一步将是在
ssh\u config
中添加一个,它将返回正确的密钥文件名


类似功能的一个示例实现是。

解决方案是将dropbear密钥转换为ssh密钥。我用过作为参考

下面是将dropbear密钥转换为ssh密钥的命令

/usr/lib/dropbear/dropbearconvert dropbear openssh /opt/private-key-rsa.dropbear /opt/id_rsa

您的示例命令在shell中有效吗?@NicNilov是的,它有效您是对的。此外,dropbear(dbclient)的密钥与ssh密钥不兼容。我必须将dropbear密钥转换为ssh密钥。有关更多详细信息,请参阅答案。