Golangを使用したSSH接続の実装方法

PHPz
リリース: 2023-04-14 13:51:39
オリジナル
3891 人が閲覧しました

Golang は、ネットワーク アプリケーションの開発に非常に適した、強力に型指定され、同時実行性が高く、メモリ セーフなプログラミング言語です。その 1 つは、Golang を使用して SSH 接続を実装できることです。これにより、ユーザーは Linux サーバーにリモートから簡単にアクセスできるようになります。

この記事では、Golang を使用して SSH 接続を実装する方法を紹介します。まず Go 言語をインストールし、読者が独自のプロジェクトで SSH 接続を実装できるように、依存ライブラリと実装プロセスを紹介します。

1. Go 言語のインストール

まず、最新バージョンの Golang をインストールする必要があります。公式の Golang インストール パッケージ: https://golang.org/dl/ をダウンロードし、公式の手順に従ってインストールすることをお勧めします。インストールが完了したら、コマンド ラインから次のコマンドを入力して、インストールが成功したことを確認できます。

$ go version
ログイン後にコピー

インストールが成功すると、ローカル コンピュータにインストールされている Golang のバージョン番号が表示されます。

2. 依存ライブラリのインストール

次に、「golang.org/x/crypto/ssh」という名前の依存ライブラリをインストールする必要があります。このライブラリは、接続、コマンドの実行など、SSH 接続に関連する機能を提供します。

次のコマンドを実行してインストールします。

$ go get golang.org/x/crypto/ssh
ログイン後にコピー

このコマンドは、GOPATH 環境変数が指すディレクトリに依存ライブラリをダウンロードします。 GOPATH 環境変数が設定されていない場合は、次のコマンドを入力して設定できます:

$ export GOPATH=$HOME/go
ログイン後にコピー

ここでは Linux システムについて書いています。Windows を使用している場合は、export を set に変更できます。

3. SSH 接続の実装

インストールが完了したら、この依存ライブラリを使用して SSH 接続の実装を開始できます。

次に、基本的な SSH 接続のサンプル コードを示します。

package main

import (
    "fmt"
    "golang.org/x/crypto/ssh"
)

func main() {
    sshConfig := &ssh.ClientConfig{
        User: "username",
        Auth: []ssh.AuthMethod{
            ssh.Password("password"),
        },
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    }

    host := "example.com:22"
    client, err := ssh.Dial("tcp", host, sshConfig)
    if err != nil {
        panic(err)
    }
    defer client.Close()

    session, err := client.NewSession()
    if err != nil {
        panic(err)
    }
    defer session.Close()

    output, err := session.Output("ls -l")
    if err != nil {
        panic(err)
    }
    fmt.Println(string(output))
}
ログイン後にコピー

このプログラムは、まず、ホストへのログインに必要なユーザー名とパスワードを含む「ssh.ClientConfig」構成オブジェクトを作成します。ここでは、正しいユーザー名とパスワードを使用してサーバーに接続できるように、「User」パラメーターと「Auth」パラメーターを適宜置き換える必要があります。また、これは単純な例であるため、ホスト キーの検証は行わず、代わりに「HostKeyCallback」パラメータを「ssh.InsecureIgnoreHostKey()」に設定します。

次に、「ssh.Dial()」関数を使用して、TCP 経由でリモート ホストに接続します。接続が成功した場合、関数が終了する前にクライアント接続を閉じます。

次に、「client.NewSession()」関数を使用して新しいターミナル セッションを作成し、それを「session」という名前の変数に割り当てます。このとき、いくつかのコマンドを実行する必要がある場合は、「session.Output()」関数を使用できます。新しいセッションが終了するたびに、リソース リークがないことを確認するためにセッションを閉じる必要があります。

最後に、「ls -l」コマンドの戻り結果をコンソールに出力します。

まとめ

この記事では、Golang を使用して SSH 接続を実装する手順を紹介しました。まず Golang をインストールし、次に依存ライブラリをインストールし、最後に簡単な SSH 接続サンプル プログラムを実装しました。

このプログラムは単なる単純な例ですが、独自の SSH アプリケーションの開発を開始するための出発点として使用できます。 SSH は非常に安全な通信プロトコルであるため、実際の開発では、サーバーとクライアント間の安全な通信を確保するためのベスト プラクティスに従う必要があることをもう一度思い出してください。

以上がGolangを使用したSSH接続の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート