我在节点应用程序中使用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
存在,我真的很感激这里的任何指针。
答案 0 :(得分:0)
经过一段时间的挖掘后,我能够找到这个方法,我可以用它来构建这个功能:
ssh_pki_export_pubkey_base64(ssh_key, char*)
这会将ssh_key转换为其base64等效值。