登录
首页 >  Golang >  Go问答

SSH连接失败:退出并且权限拒绝 (publickey, gssapi-keyex, gssapi-with-mic)

来源:stackoverflow

时间:2024-03-08 17:24:25 227浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《SSH连接失败:退出并且权限拒绝 (publickey, gssapi-keyex, gssapi-with-mic)》,聊聊,我们一起来看看吧!

问题内容

我正在使用 org/x/crypto/ssh 包构建一个 cli 应用程序,以便使用 ssh 证书通过堡垒 ssh 到服务器。基本工作流程是; cli 工具获取用户公钥并从 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。

我尝试在另一台电脑上编译并运行它,得到了相同的结果。我尝试将证书保存到磁盘并给出路径。

但是如果我在终端上运行相同的命令。它工作正常并连接到实例。

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 服务器无法同步其时间造成的。

本篇关于《SSH连接失败:退出并且权限拒绝 (publickey, gssapi-keyex, gssapi-with-mic)》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>