go - cmd := exec.Command("ssh", "ec2-user@publicip") 退出权限被拒绝 (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:权限被拒绝(公钥,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 服务器无法同步其时间。
推荐阅读
- python - Python tkinter 在主函数之外更新画布标签
- javascript - 如何将项目列表添加到离线存储?
- apache-flink - Flink 作业总是显示“已创建”状态
- reactjs - i18next 深度键值反应原生
- html - 无法将对象居中到页面中间
- grafana - “全部”值给了我:pq:grafana中的“,”或附近的语法错误
- angular - 根据数据在角度内动态生成单选按钮
- redmine - 如何使 redmine/default/files 高可用?
- python - Python用NaN替换熊猫数据框中的字符串
- sql-server - 为什么在 SQL Server 版本 15.0.4033.1 中不同的字符串(仅大小写不同)相同?