Go에서 키를 사용하여 Linux 서버에 SSH로 연결하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-03 14:04:03
원래의
995명이 탐색했습니다.

How to SSH into Linux Servers Using Keys in Go?

Go의 키를 사용하여 Linux 서버에 SSH 연결

Ssh 패키지를 통해 SSH와 Golang의 키를 사용하여 서버에 연결할 수 있습니다. 수행 방법은 다음과 같습니다.

다이얼 기능에는 ssh.PublicKeys를 사용하여 SSH 키에서 생성할 수 있는 ssh.AuthMethod 인스턴스가 필요합니다. PEM 바이트에서 서명자를 얻으려면 ssh.ParsePrivateKey를 사용하십시오.

개인 키의 서명자 필드를 사용하려면 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에서 키를 사용하여 Linux 서버에 SSH로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿