尝试连接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"
我是长生不老药的新手,已经阅读了erlang ssh本文档已有2天了。我在文档中找不到任何难以理解的示例。
答案 0 :(得分:0)
您正在使用非默认键名private-key-rsa.dropbear
。默认情况下,Erlang查找以下名称集:
- 可选:在获得公钥授权的情况下,一个或多个用户的私钥。默认文件是
- id_dsa和id_dsa.pub
- id_rsa和id_rsa.pub
- id_ecdsa和id_ecdsa.pub`
要验证原因,请尝试将private-key-rsa.dropbear
重命名为id_rsa
。如果可行,下一步将是在ssh_config
上添加一个key_cb
callback,它将返回正确的密钥文件名。
类似功能的一个示例实现为labzero/ssh_client_key_api。
答案 1 :(得分:0)
解决方案是将dropbear密钥转换为ssh密钥。我已使用this link作为参考。
这是将dropbear键转换为ssh键的命令
/usr/lib/dropbear/dropbearconvert dropbear openssh /opt/private-key-rsa.dropbear /opt/id_rsa