在Erlang中使用 ssh 和 public_key 应用程序,我发现了一个不错的功能。
我尝试使用 rsa密钥连接到正在运行的Erlang SSH守护程序,但验证失败,系统提示我输入密码。
经过一些调试和跟踪(以及一些咖啡)后,我意识到,由于一些奇怪的原因,我的用户的无效密钥就在那里。 authorized_keys 文件包含两个键。错误的一个在文件中的某个位置,而正确的一个附加在文件的末尾。
现在,Erlang SSH应用程序在将提供的密钥与authorized_keys中包含的密钥进行区分时,它正在查找第一个条目(完全忽略第二个条目 - 正确的条目)。然后,它正在切换到不同的身份验证机制(起初它正在尝试 dsa 而不是 rsa 然后它提示输入密码)。
问题是:这种行为是打算还是SSH服务器应该检查 authorized_keys 文件中同一用户的多个条目?这是一个通用的SSH行为,还是仅仅针对Erlang实现?
答案 0 :(得分:3)
是的,它是“首次失败”身份验证,我多次遇到您的问题。就实现而言,有人向我解释说恶魔遍历authorised_keys文件寻找匹配的登录信息,然后检查了密钥。
这似乎是标准实施,