Sample code for 30+ languages & platforms
PHP Extension

SFTP Authentication using an SSH Certificate

See more SFTP Examples

Demonstrates how to SFTP authenticate using an SSH certificate.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$sbSshCert = new CkStringBuilder();
$success = $sbSshCert->LoadFile('qa_data/sshCert/user_ecdsa_key-cert.pub','utf-8');
if ($success == false) {
    print 'Failed to load user_ecdsa_key-cert.pub' . "\n";
    exit;
}

$sbPrivKey = new CkStringBuilder();
$success = $sbPrivKey->LoadFile('qa_data/sshKeys/user_ecdsa_key','utf-8');
if ($success == false) {
    print 'Failed to load user_ecdsa_key' . "\n";
    exit;
}

$key = new CkSshKey();
// Provide the password if the user_ecdsa_key is stored in an encrypted format.
$key->put_Password('secret');
$success = $key->FromOpenSshPrivateKey($sbPrivKey->getAsString());
if ($success == false) {
    print $key->lastErrorText() . "\n";
    exit;
}

// Indicate that the SSH certificate is to be used for authentication.
// The UseSshCertificate method was added in Chilkat v11.0.0
$key->UseSshCertificate($sbSshCert->getAsString());

$sftp = new CkSFtp();

$hostname = 'sftp.example.com';
$port = 22;
$success = $sftp->Connect($hostname,$port);
if ($success != true) {
    print $sftp->lastErrorText() . "\n";
    exit;
}

$success = $sftp->AuthenticatePk('myLogin',$key);
if ($success != true) {
    print $sftp->lastErrorText() . "\n";
    exit;
}

print 'Public-Key Authentication using an SSH Certificate was Successful!' . "\n";

?>