簡體   English   中英

cmd := exec.Command("ssh", "ec2-user@publicip") 退出時權限被拒絕 (publickey,gssapi-keyex,gssapi-with-mic)

[英]cmd := exec.Command("ssh", "ec2-user@publicip") exits with Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

我正在使用 org/x/crypto/ssh 包來構建一個 cli 應用程序,以使用 ssh 證書通過堡壘 ssh 到服務器。 基本工作流程是; cli 工具獲取用戶公鑰並從 vault ssh ca 對其進行簽名,並且生成的證書用於向服務器驗證用戶身份。 它工作得很好。

configure := &ssh.ClientConfig{
            User: "ec2-user",
            Auth: []ssh.AuthMethod{
                // Use the PublicKeys method for remote authentication.
                ssh.PublicKeys(certSigner),
            },
            HostKeyCallback: ssh.InsecureIgnoreHostKey(),
        }
        //log.Println(config.bastionserver.publicIP)

        // Connect to the remote server and perform the SSH handshake.
        proxyClient, err := ssh.Dial("tcp", net.JoinHostPort(config.bastion.publicIP, "22"), configure)
        if err != nil {
            log.Fatalln(err)
        }

        session, err := proxyClient.NewSession()
        if err != nil {
            log.Fatalln(err)
        }
        defer session.Close()

        if err = session.Shell(); err != nil {
            log.Fatalln(err)
        }

        session.Wait()

我做了一些更改並恢復到代碼,我開始收到以下錯誤。 我用git來恢復。

ssh:握手失敗:ssh:無法驗證,嘗試的方法 [publickey none],沒有支持的方法

所以我降低了復雜性並嘗試了以下塊來嘗試通過我正在構建的 cli 應用程序連接到堡壘。

cmd := exec.Command("ssh", "-i", signedKeyPath, "-i", privateKeyPath, "ec2-user@host")

    fmt.Println(cmd.String())
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    err = cmd.Run()
    if err != nil {
        log.Fatalln(err)
    }

它仍然退出

/usr/bin/ssh -i /home/rochana/.ssh/id_rsa-cert.pub -i /home/rochana/.ssh/id_rsa ec2-user@host ec2-user@host: 權限被拒絕 (publickey,gssapi- keyex,gssapi-with-mic)。 2020-02-17 11:01:25.168548 退出狀態 255。

我嘗試在不同的 PC 上編譯和運行它,但得到了相同的結果。 我嘗試將證書保存到磁盤並給出路徑。

但是如果我在終端上運行相同的命令。 它工作正常並連接到實例。

ssh -i ~/.ssh/id_rsa-cert.pub -i ~/.ssh/id_rsa ec2-user@host

或者只是復制並粘貼 cmd.String() 輸出

/usr/bin/ssh -i /home/rochana/.ssh/id_rsa-cert.pub -i /home/rochana/.ssh/id_rsa ec2-user@host

當我直接在終端上運行但不使用 exec 命令時,一切正常

錯誤是由於 Vault 服務器無法同步其時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM