使用libssh从消息中提取SSH公钥

时间:2014-10-23 03:23:26

标签: javascript c++ node.js ssh rsa

我在节点应用程序中使用node-libssh作为libssh的一个很好的绑定,可以很容易地模拟一个ssh服务器。但是,我需要从传入的SSH会话中提取公钥。我需要一个字符串化的密钥版本,以便以后在db查询中使用,它必须与id_rsa.pub文件中的格式相同。

我已经能够将其缩小到需要一种方法来在libssh ssh_key和char数组之间进行转换。

它足够简单,可以使用ssh_key pubKey = ssh_message_auth_pubkey(message);来获取pubkey的ssh_key版本,但是libssh中似乎没有方法可以将ssh_key转换为可以传递回的任何其他格式我的nodejs进程。我认为这是一个解决方案:

ssh_key authKey = ssh_message_auth_pubkey(m->message);
const char *pubKey = ssh_key_to_char(authKey);
if (pubKey)
  instance->Set(NanSymbol("pubKey"), v8::String::New(pubKey));

但自然并不是那么简单,因为没有方法ssh_key_to_char存在,我真的很感激这里的任何指针。

1 个答案:

答案 0 :(得分:0)

经过一段时间的挖掘后,我能够找到这个方法,我可以用它来构建这个功能:

ssh_pki_export_pubkey_base64(ssh_key, char*)

这会将ssh_key转换为其base64等效值。