>백엔드 개발 >Golang >Golang의 개인 키로 SSH를 사용하여 원격 서버에 연결하는 방법은 무엇입니까?

Golang의 개인 키로 SSH를 사용하여 원격 서버에 연결하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-05 13:36:02350검색

How to Connect to a Remote Server Using SSH with a Private Key in Golang?

Golang에서 개인 키를 사용하여 SSH를 사용하여 원격 서버에 연결

Go에서 SSH 패키지를 활용하면 다음을 통해 원격 서버에 편리하게 연결할 수 있습니다. SSH 프로토콜. 그러나 개인 키로 연결을 설정하려면 패키지 기능에 대한 더 깊은 이해가 필요합니다.

SSH 패키지는 비밀번호 인증을 포함한 다양한 인증 방법을 지원합니다. 패키지 설명서에 언급된 대로 다이얼 기능을 사용하면 사용자가 연결 설정에 사용할 인증 방법을 지정할 수 있습니다. 인증에 개인 키를 활용하려면 패키지에서 제공하는 추가 방법을 사용해야 합니다.

이 시나리오에서는 PublicKeys 기능이 중요한 역할을 합니다. SSH 서명자 모음을 인증 메커니즘으로 변환하는 데 도움이 됩니다. 이러한 서명자는 PEM 바이트 표현에서 구문 분석하는 것을 포함하여 다양한 방법을 사용하여 얻을 수 있습니다. NewSignerFromKey 함수를 사용하면 RSA, DSA 또는 ECDSA 개인 키를 직접 활용하는 기능도 지원됩니다.

이러한 개념의 실제 구현을 보여주는 예를 살펴보겠습니다. 이 예에는 일반적으로 개인 키 인증 활용을 따르는 에이전트 기반 인증에 대한 지원이 포함되어 있습니다.

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

    "golang.org/x/crypto/ssh"
    "golang.org/x/crypto/ssh/agent"
)

func main() {
    // Establishes a connection to the SSH Agent
    sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK"))
    if err != nil {
        log.Fatal(err)
    }
    agent := agent.NewClient(sock)

    // Acquires signers from the SSH Agent
    signers, err := agent.Signers()
    if err != nil {
        log.Fatal(err)
    }

    // Creates a list of authentication methods using the signers obtained
    auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)}

    // Configures the client using the username and authentication details
    cfg := &ssh.ClientConfig{
        User: "username",
        Auth: auths,
    }
    cfg.SetDefaults()

    // Establishes a connection to the remote server
    client, err := ssh.Dial("tcp", "aws-hostname:22", cfg)
    if err != nil {
        log.Fatal(err)
    }

    // Creates a new session in the established connection
    session, err = client.NewSession()
    if err != nil {
        log.Fatal(err)
    }

    log.Println("Successfully established a session!")
}</code>

이 향상된 코드 샘플을 사용하면 SSH를 통해 개인 키를 사용하여 원격으로 서버에 연결할 수 있습니다. Go의 패키지. 전체 프로세스를 보다 포괄적으로 보여주기 위해 에이전트 기반 인증과 같은 추가 기능도 통합되었습니다.

위 내용은 Golang의 개인 키로 SSH를 사용하여 원격 서버에 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.