0

I'm trying to connect via PHP script to a SFTP server, using SSH Key autentication method.

My PHP code is:

<?php
    $host = 'my_host';
    $port = 22;
    $conn = ssh2_connect($host, $port, array('hostkey'=>'ssh-rsa'));
    $username = 'my_user';
    $pub_key = 'c:/UserKeys/pub_key.pub';
    $pri_key = 'c:/UserKeys/priv_key';
    ssh2_auth_pubkey_file($conn, $username, $pub_key, $pri_key);
?>

I always receive this error message: Warning: ssh2_auth_pubkey_file(): Authentication failed for my_user using public key: Invalid key data, not base64 encoded in.

My private key file:

-----BEGIN DSA PRIVATE KEY-----
MIIDPwIBAAKCAQEA05/xIIgUWMqFh0J/ofIBBx28/K3pzQxw1ViLin3sAwiLVPH1
3a4fSfL+mf+KBjOgWYrNAPiVBN2vQGoPi5hOwsxM4rIls0U/TFigD6riFPE/UMUf
Cdllm0qxdjuHSVilOY6OO68Y0fjyFPpoLS2ggQgRoreexEqaRmO7sM8Ug5BG3JXJ
.
.
.
4ZOb4ihmp13x8spPdfSWWuB7MIMjUdHOzssGs357H4xvzEVtWjhleq+Wc1+jW6HD
sUgfKr1FybmYZlKtSdnfxN5U+KXNrY4J9FQhuFXfn2MZU7s20yf95jOJCLEbAhRF
7RmwYNfgUT0O2/swzGxDiVFjfQ==
-----END DSA PRIVATE KEY-----

My public key file:

---- BEGIN SSH2 PUBLIC KEY ----
Subject: aaaaaa
Comment: "[2048-bit DSA, aaaaaa, 2013-10-07 12:42:06]"
AAAAB3NzaC1kc3MAAAEBANOf8SCIFFjKhYdCf6HyAQcdvPyt6c0McNVYi4p97AMIi1Tx9d
2uH0ny/pn/igYzoFmKzQD4lQTdr0BqD4uYTsLMTOKyJbNFP0xYoA+q4hTxP1DFHwnZZZtK
sXY7h0lYpTmOjjuvGNH48hT6aC0toIEIEaK3nsRKmkZju7DPFIOQRtyVyRJFlmWhomPV8t
ceYJZxmHw7rEQ7/JZ24Gq2wYy/NlCwUp8x/2MyGtMKW23zz9QIuFBUEe9J4IpXfoPWmIVN
.
.
.
vggKfZGuRTbQ5zeeF9Gyt6PKb15+77QQPey3aTXixyojp34jNfaWQ91qxmJeLAWlrluKS9
B+Ab7VB5iUjhkntnTETJzLmkvloljSJL/funlbkGpxiznU6q/YqYvlZ5kB2obdqZ8WmO+u
ssC33vA3yiu7KXuRG+7S5o2Tutj2VBfPbyg5Bpf9FmqyGf3TrYf0x1a4+R4ZOb4ihmp13x
8spPdfSWWuB7MIMjUdHOzssGs357H4xvzEVtWjhleq+Wc1+jW6HDsUgfKr1FybmYZlKtSd
nfxN5U+KXNrY4J9FQhuFXfn2MZU7s20yf95jOJCLEb
---- END SSH2 PUBLIC KEY ----

I'm looking on the Internet but I can not get the script to work properly.

Can someone help me?

jww
  • 97,681
  • 90
  • 411
  • 885
user9846973
  • 57
  • 2
  • 8
  • DSA keys were disabled by default in SSH servers starting at 7.0. You should use an RSA key for really old systems; or ecdsa or ed25519 keys for modern systems. Also see [OpenSSH Legacy Options](http://www.openssh.com/legacy.html): *"OpenSSH 7.0 and greater similarly disable the ssh-dss (DSA) public key algorithm. It too is weak and we recommend against its use..."* – jww Feb 07 '19 at 18:15
  • 4
    Possible duplicate of [PHP ssh2\_auth\_pubkey\_file(): Authentication failed using public key: Invalid key data, not base64 encoded](https://stackoverflow.com/q/11007090/608639) – jww Feb 07 '19 at 20:42

1 Answers1

1

Make sure your key files are opened correctly. It seems that the paths you provided are not in correct format (using front facing slashes instead of backslashes). It might help to first try to debug the correct paths first using fopen

Tim S
  • 181
  • 1
  • 3