Sample code for 30+ languages & platforms
DataFlex

SFTP Public-Key Authentication (id_ed25519)

See more SFTP Examples

Demonstrates how to authenticate with an SSH/SFTP server using publickey authentication with an Ed25519 private key (id_ed25519).

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Variant vKey
    Handle hoKey
    String sPrivKeyText
    Handle hoSftp
    String sHostname
    Integer iPort
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatSshKey)) To hoKey
    If (Not(IsComObjectCreated(hoKey))) Begin
        Send CreateComObject of hoKey
    End

    // The id_ed25519 file should contain something like this:
    // (You can open it in a text editor..)

    // -----BEGIN OPENSSH PRIVATE KEY-----
    // b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDIeK9+Xw
    // 6Do9gnhtrJu5iJAAAAZAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIMh/Ge7fjQCssmVd
    // BqjYZbRAI0pY8IrnB6J1yLetq34OAAAAoMVP7cvy4hTiAINA3I4v55OonkpKza8mzfUW18
    // RDQeYL3ovCVaAYOGcCpf/SW3QiY6tnXq+5WDEfJ7Z/kQ0nl2+1wSLOytxpyO+IY0rRtLrX
    // 6e/agR4nbZpt/MFG6xqcNASbtDgg+9IWGvDrtXOLFofx07/zml+UjFL0tXRpCjOxeqKyXH
    // t8SRgdT97d9/bYPwapaXY+b2DVVy5/LVx4Sq8=
    // -----END OPENSSH PRIVATE KEY-----

    Get ComLoadText Of hoKey "c:/temp/id_ed25519" To sPrivKeyText
    Get ComLastMethodSuccess Of hoKey To bTemp1
    If (bTemp1 <> True) Begin
        Get ComLastErrorText Of hoKey To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // If your private key was saved encrypted, then you'll need the password.
    // In this example, the password "blahblah" is valid for the above key -- which is a real Ed25519 key generated/saved from puttygen.
    Set ComPassword Of hoKey To "blahblah"

    Get ComFromOpenSshPrivateKey Of hoKey sPrivKeyText To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoKey To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatSFtp)) To hoSftp
    If (Not(IsComObjectCreated(hoSftp))) Begin
        Send CreateComObject of hoSftp
    End

    // Set some timeouts, in milliseconds:
    Set ComConnectTimeoutMs Of hoSftp To 5000
    Set ComIdleTimeoutMs Of hoSftp To 15000

    Move "sftp.example.com" To sHostname
    Move 22 To iPort
    Get ComConnect Of hoSftp sHostname iPort To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Authenticate with the SSH server.  Chilkat SFTP supports
    // both password-based authenication as well as public-key
    // authentication.  
    Get pvComObject of hoKey to vKey
    Get ComAuthenticatePk Of hoSftp "myLogin" vKey To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComLastErrorText Of hoSftp To sTemp1
    Showln sTemp1
    Showln "Public-Key Authentication Successful!"

    // Now go do whatever you're app needs to do...


End_Procedure