我正在使用node-libssh作为我的节点应用程序中与libssh的很好的绑定(bind),并且可以非常轻松地模拟ssh服务器。但是,我需要从传入的SSH session 中提取公钥。我需要密钥的字符串化版本,以便以后在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存在,并不是那么简单,我真的很感谢这里的任何指针。

最佳答案

经过一段时间的研究,我找到了可以用来构建此功能的方法:
ssh_pki_export_pubkey_base64(ssh_key, char*)
这会将ssh_key转换为其等效的base64。

08-03 16:00