首页 > 后端开发 > Golang > 正文

如何使用 Go 中的密钥 SSH 到 Linux 服务器?

Susan Sarandon
发布: 2024-11-03 14:04:03
原创
971 人浏览过

How to SSH into Linux Servers Using Keys in Go?

使用 Go 中的密钥 SSH 到 Linux 服务器

使用 SSH 和 Golang 中的密钥连接到服务器可以通过 ssh 包来实现。操作方法如下:

Dial 功能需要一个 ssh.AuthMethod 实例,可以使用 ssh.PublicKeys 从 SSH 密钥创建该实例。要从 PEM 字节获取签名者,请使用 ssh.ParsePrivateKey。

要使用私钥的 Signers 字段,可以使用 ssh.PublicKeys(signers...) 作为身份验证方法。

示例代码:

<code class="go">import (
    "log"
    "net"
    "os"

    "github.com/gliderlabs/ssh"
)

func main() {
    sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK"))
    if err != nil {
        log.Fatal(err)
    }

    agent := agent.NewClient(sock)

    signers, err := agent.Signers()
    if err != nil {
        log.Fatal(err)
    }

    auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)}

    cfg := &ssh.ClientConfig{
        User: "username",
        Auth: auths,
    }
    cfg.SetDefaults()

    client, err := ssh.Dial("tcp", "aws-hostname:22", cfg)
    if err != nil {
        log.Fatal(err)
    }

    session, err := client.NewSession()
    if err != nil {
        log.Fatal(err)
    }

    log.Println("we have a session!")
}</code>
登录后复制

此代码模仿 ssh -i x.pem user@host 命令,使用提供的密钥与指定服务器建立 SSH 会话。您现在可以通过会话变量在服务器内执行命令。

以上是如何使用 Go 中的密钥 SSH 到 Linux 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板