Sample code for 30+ languages & platforms
Visual FoxPro

SSH Authentication using X.509 Certificates

See more SSH Examples

Demonstrates how to authenticate with an SSH/SFTP server using an certificate's private key.

Note: See X.509v3 Certificates for SSH Authentication for more information.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSsh
LOCAL lcHostname
LOCAL lnPort
LOCAL loCert
LOCAL lcPrivKeyPem
LOCAL loKey

lnSuccess = 0

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

loSsh = CreateObject('Chilkat.Ssh')

lcHostname = "ssh.example.com"
lnPort = 22
lnSuccess = loSsh.Connect(lcHostname,lnPort)
IF (lnSuccess <> 1) THEN
    ? loSsh.LastErrorText
    RELEASE loSsh
    CANCEL
ENDIF

* Load the cert + private key from a .pfx.
* Note: Chilkat provides methods for loading certs and private keys from many sources, including smart cards and USB tokens (HSM's)
loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCert.LoadPfxFile("qa_data/pfx/example.pfx","pfx_password")
IF (lnSuccess <> 1) THEN
    ? loCert.LastErrorText
    RELEASE loSsh
    RELEASE loCert
    CANCEL
ENDIF

* Get the cert's private key (as PEM) to be used for SSH authentication.
* (The public key is installed on the server.)
lcPrivKeyPem = loCert.GetPrivateKeyPem()
IF (loCert.LastMethodSuccess = 0) THEN
    ? loCert.LastErrorText
    RELEASE loSsh
    RELEASE loCert
    CANCEL
ENDIF

loKey = CreateObject('Chilkat.SshKey')

* Load a private key from a PEM string:
lnSuccess = loKey.FromOpenSshPrivateKey(lcPrivKeyPem)
IF (lnSuccess <> 1) THEN
    ? loKey.LastErrorText
    RELEASE loSsh
    RELEASE loCert
    RELEASE loKey
    CANCEL
ENDIF

* Authenticate with the SSH server.
lnSuccess = loSsh.AuthenticatePk("myLogin",loKey)
IF (lnSuccess <> 1) THEN
    ? loSsh.LastErrorText
    RELEASE loSsh
    RELEASE loCert
    RELEASE loKey
    CANCEL
ENDIF

? "Public-Key Authentication Successful!"

RELEASE loSsh
RELEASE loCert
RELEASE loKey