Sample code for 30+ languages & platforms
Go

SSH Authentication using an SSH Certificate

See more SSH Examples

Demonstrates how to authenticate using an SSH certificate.

Chilkat Go Downloads

Go
    success := false

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

    sbSshCert := chilkat.NewStringBuilder()
    success = sbSshCert.LoadFile("qa_data/sshCert/user_ecdsa_key-cert.pub","utf-8")
    if success == false {
        fmt.Println("Failed to load user_ecdsa_key-cert.pub")
        sbSshCert.DisposeStringBuilder()
        return
    }

    sbPrivKey := chilkat.NewStringBuilder()
    success = sbPrivKey.LoadFile("qa_data/sshKeys/user_ecdsa_key","utf-8")
    if success == false {
        fmt.Println("Failed to load user_ecdsa_key")
        sbSshCert.DisposeStringBuilder()
        sbPrivKey.DisposeStringBuilder()
        return
    }

    key := chilkat.NewSshKey()
    // Provide the password if the user_ecdsa_key is stored in an encrypted format.
    key.SetPassword("secret")
    success = key.FromOpenSshPrivateKey(*sbPrivKey.GetAsString())
    if success == false {
        fmt.Println(key.LastErrorText())
        sbSshCert.DisposeStringBuilder()
        sbPrivKey.DisposeStringBuilder()
        key.DisposeSshKey()
        return
    }

    // 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())

    ssh := chilkat.NewSsh()

    hostname := "ssh.example.com"
    port := 22
    success = ssh.Connect(hostname,port)
    if success != true {
        fmt.Println(ssh.LastErrorText())
        sbSshCert.DisposeStringBuilder()
        sbPrivKey.DisposeStringBuilder()
        key.DisposeSshKey()
        ssh.DisposeSsh()
        return
    }

    success = ssh.AuthenticatePk("myLogin",key)
    if success != true {
        fmt.Println(ssh.LastErrorText())
        sbSshCert.DisposeStringBuilder()
        sbPrivKey.DisposeStringBuilder()
        key.DisposeSshKey()
        ssh.DisposeSsh()
        return
    }

    fmt.Println("Public-Key Authentication using an SSH Certificate was Successful!")

    sbSshCert.DisposeStringBuilder()
    sbPrivKey.DisposeStringBuilder()
    key.DisposeSshKey()
    ssh.DisposeSsh()