在C程序中使用libssh进行密钥验证

时间:2016-05-03 05:51:26

标签: c authentication key libssh

我想使用libssh登录远程设备而不在我的代码中指定密码。我已经测试了密码验证,它工作正常。我尝试过很多libssh的密钥认证API组合,但似乎没有用。

对于密钥验证,我写了这个函数:

    int vs_ssh_authenticate(vsBasestation_t *bs)
    {
      int auth = -1;
      ssh_key pkey, privkey;
      #ifdef KEY_AUTHENTICATION
      char *password;
      password="sample";
      auth = ssh_userauth_password(bs->session,NULL,password);
      if (auth==SSH_AUTH_ERROR)
      {
         fprintf(stderr,"Authentication with password failed: %s\n",ssh_get_error(bs->session));
         return auth;
      }
      #else
      if(ssh_pki_import_pubkey_file("~/.ssh/key.pub",&pkey) == SSH_OK)
      {
          if(ssh_pki_import_privkey_file("~/.ssh/key",NULL,
                                           NULL,NULL,&privkey) == SSH_OK)
          {
              auth = ssh_userauth_publickey(bs->session, NULL, privkey);
          }
      }
      #endif
      return auth;
    }

现在,如果客户端计算机的公钥存在于服务器的“authorized_keys”文件中,则此机制可以正常工作,否则服务器将发送拒绝访问的响应。如何从该程序中将客户端的公钥复制到服务器?

感谢。

0 个答案:

没有答案