[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ssh_pki_import_privkey_file always returns -1
[Thread Prev] | [Thread Next]
- Subject: Re: ssh_pki_import_privkey_file always returns -1
- From: Andreas Schneider <asn@xxxxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Mon, 17 Apr 2017 20:12:23 +0200
- To: libssh@xxxxxxxxxx
On Monday, 17 April 2017 18:30:46 CEST Eric Lemasson wrote:
> Hello
>
> I hope this is the right place to ask this kind of question, apologizes in
> advance if I should send my question somewhere else. I am new to libssh and
> trying to use it properly in a windows application that needs to do sftp. I
> have followed samples found online (mostly in the tutorial section of
> libssh website) and came up with the following piece of code:
>
> ssh_session my_ssh_session = ssh_new();
> if (my_ssh_session == NULL) {
> exit(-1);
> }
> ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST,
> serverIP.GetBuffer()); ssh_options_set(my_ssh_session,
> SSH_OPTIONS_LOG_VERBOSITY, &verbosity); ssh_options_set(my_ssh_session,
> SSH_OPTIONS_PORT, &port); ssh_options_set(my_ssh_session, SSH_OPTIONS_USER,
> User.GetBuffer());
>
> rc = ssh_connect(my_ssh_session);
> if (rc != SSH_OK)
> {
> ssh_free(my_ssh_session);
> exit(-1);
> }
> if (verify_knownhost(my_ssh_session) < 0)
> {
> ssh_disconnect(my_ssh_session);
> ssh_free(my_ssh_session);
> exit(-1);
> }
> rc = ssh_userauth_publickey_auto(my_ssh_session, NULL,
> NULL); if (rc != SSH_AUTH_SUCCESS)
> {
> ssh_key pubKey, privKey;
> rc =
> ssh_pki_import_pubkey_file("C:\\Users\\XXXX\\.ssh\\key.pub", &pubKey); if
> (rc == SSH_OK) {
> rc =
> ssh_userauth_try_publickey(my_ssh_session, NULL, pubKey); if (rc ==
> SSH_AUTH_SUCCESS) { rc =
> ssh_pki_import_privkey_file("C:\\Users\\XXXX\\.ssh\\key", NULL, NULL, NULL,
> &privKey); if (rc == SSH_OK) { rc = ssh_userauth_publickey(my_ssh_session,
> NULL, privKey); ssh_key_free(privKey); }
> }
> ssh_key_free(pubKey);
> }
> if (!authenticated) {
> rc =
> ssh_userauth_password(my_ssh_session, NULL, password.GetBuffer()); if (rc
> != SSH_AUTH_SUCCESS) {
>
> ssh_disconnect(my_ssh_session); ssh_free(my_ssh_session); exit(-1); }
> }
> }
>
> The key pair have been generated with puttygen tool, and I understand that
> putty uses a different format to store the private key, so I have used the
> Conversion / Export OpenSSH key (force new file format) option to have the
> private key in standard format. The public key has been added to the
> authorized_key file on the remote server and the manual connection using
> putty works fine, using a password, or using the putty key agent (pageant)
> without having to enter a password.
>
> In my code above, the call to the function ssh_pki_import_privkey_file
> always return -1. I have tried different key type but I still get the same
> thing. Also tried to remove the line (--- BEGIN OPENSSH PRIVATE KEY ----)
> in the key file but no luck. I know that on linux / unix, permission
> checking on key files are very strict in .ssh directory and may be a reason
> for failing to authenticate.
>
> The fact that I am getting SSH_ERROR and not SSH_EOF tells me that it is
> able to find the file, so I am thinking it is a file format or a file
> permission issue.
>
> I don't know if the same permission checks are done on Windows and if so,
> what the permission should be.
>
> The password authentication in the code works fine so I am still able to
> connect to the server but I would like to have the key method to work.
>
> If you have any suggestion or tips, that would be greatly appreciated,
Turn on debug messages and it will give you some hints :)
http://api.libssh.org/master/
group__libssh__session.html#ga7a801b85800baa3f4e16f5b47db0a73d
Andreas
--
Andreas Schneider GPG-ID: CC014E3D
www.cryptomilk.org asn@xxxxxxxxxxxxxx
| RE: ssh_pki_import_privkey_file always returns -1 | Eric Lemasson <eric.lemasson@xxxxxxxxxxxxxx> |
| ssh_pki_import_privkey_file always returns -1 | Eric Lemasson <eric.lemasson@xxxxxxxxxxxxxx> |