Failed to user Key authentication for SFTP (wodSFTP / wodSFTP.NET / wodSFTPdll)

by tom, (2228 days ago)

Hi All,

I got a problem by Delphi using wodSFTPComLib & wodSSHKeyLib to send file to OpenSSH SFTP Server.
Use username and password to send file is work fine, but failed to send file by using key.

I have tested public/private key by Winscp and Xshell it's both work fine, that means I can confirm that the keys correct.

--------------------------------------------------

var k: Tkeys;
begin
k := TKeys.Create(self);
k.Load('c:\private_key');
PrivateKey := k.ToXmlString(RSAkey, true);
CoreSC.Authentication := authPubkey;
CoreSC.Connect1; // if I use Connect it will nothing be happened, I do not know why.
end

--> with error: Invalid username or password reported by server
Private key does not have password.

--------------------------------------------------

var k: Tkeys;
begin
k := TKeys.Create(self);
k.Load('c:\private_key');
PrivateKey := k.PrivateKey[RSAkey];
CoreSC.Authentication := authPubkey;
CoreSC.Connect1; // if I use Connect it will nothing be happened, I do not know why.
end

--> with error: Private key type could not be determined


how could it be solved, someone can help :)
Thanks!

TOM

locked

Failed to user Key authentication for SFTP

by Jasmine, (2228 days ago) @ tom

Hi Tom.

Who created the key? wodSFTP can try to read "alien" keys, but doesn't have to succeed. If they are in some 3rd party format, then it will fail to read it.

Jasmine.

locked

Failed to user Key authentication for SFTP

by tom, (2228 days ago) @ Jasmine
edited by unknown,

Hi Tom.

Who created the key? wodSFTP can try to read "alien" keys, but doesn't have to succeed. If they are in some 3rd party format, then it will fail to read it.

Jasmine.


Hi Jasmine,

Thanks!

The keys genereated by Tkeys object.

-----------------------------------------
var
k: TKeys;
begin
k := TKeys.Create(self);
k.Generate(RSAKey);
k.Save(RSAKey, 'private_key');

p := TStringList.Create;
p.Add(k.PublicKeyOpenSSH[RSAKey]);
p.SaveToFile('public_key');
end;

----------------------------------------------
The context of private key

-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDBJdplJHxBVhismG5nK1oyfHiSm1FYZHa0qoMXti2PQEgnOwUK
--more--
4z9txiZTt9s3d6OT5XIae4+iz9ap5l1fTIPnsr4gwQ==
-----END RSA PRIVATE KEY-----

-----------------------------------------------
The context of public key for openSSH

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwSXaZSR8Q
--more--
S08HEd0QlxDYMgvX5USzv8oz6NQc0=

-----------------------------------------------
The running value of k.PrivateKey[RSAKey] by Watch

#0#0#0#7'ssh-rsa'#0#0#0'?'#0'?趀$|AV'#$18'瑯ng+Z2|x挍QXdv椽??廆H'';
--more--
6O?恳"QRuZ鬬'#$14'^`?m?S粉7w錼'#$1A'{彚现╂]_L冪簿 ?'

--------------------------------------------------
The running value of k.ToXmlString(RSAKey, true); by Watch

'<RSAKeyValue><Modulus>wSXaZSR8QVYYrJh
--more--
4YtMIZLg0Irqo6b4ZR+c=</D></RSAKeyValue>'

------------------------------------------------

TOM

locked

Failed to user Key authentication for SFTP

by Jasmine, (2228 days ago) @ tom

Hi Tom,

I just checked, key is loaded ok.

But I think this line

PrivateKey := k.ToXmlString(RSAkey, true);

causes issue. Can you do something like

Sftp1.PrivateKey = k

or k.DefaultInterface() or something like that, I don't remember exact line for Delphi. PrivateKey will not accept XML, but will accept reference to wodKeys or raw data in some cases.

Jasmine.

locked

Failed to user Key authentication for SFTP

by tom, (2228 days ago) @ Jasmine

Hi Tom,

I just checked, key is loaded ok.

But I think this line

PrivateKey := k.ToXmlString(RSAkey, true);

causes issue. Can you do something like

Sftp1.PrivateKey = k

or k.DefaultInterface() or something like that, I don't remember exact line for Delphi. PrivateKey will not accept XML, but will accept reference to wodKeys or raw data in some cases.

Jasmine.

Hi Jasmine,

Issue has been solved by used sftp.PrivateKey := k.DefaultInterface;

Thanks very much!
Have a nice day!

TOM

locked