ちょっと前に Golangでsshの多段プロキシ、 Socks5プロキシ経由での接続について調べたが、今回はhttpプロキシ経由の場合どうするのかについて調べてみた。
残念ながらhttpプロキシ経由の通信(CONNECTメソッドを利用したプロキシ)で*net.Connを取得できるライブラリは無いようで、そのあたりについては書かないとならないようだ。
幸いにも サンプルコード を書かれている人がいたので、それを使ってhttpプロキシを経由したssh接続のコードを記載する。
実行可能なコードはこちらにもおいてある。
ssh_term_http_proxy.go
...
GolangでSocks5 Proxy経由でのssh接続をする場合はどうするのか調べてたので、備忘で残しておく。
Socks5であれば golang.org/x/net/proxy
ライブラリを使うことで*net.Connを取得できるので、それを利用してssh接続してやればいい。
Golangでsshへの接続を行う際、ssh proxyはどうやってやるんだろうと思ったんで調べてみた。
実装は結構簡単で、以下のように一度Proxyにsshでログイン後、ログイン対象サーバへの接続をProxyで作成してやるという流れでいけるようだ。
抜粋。動作するコードはこちらに記載。
ssh_term_proxy.go
// proxy1の情報
proxy1Host := "proxy1.host.local"
proxy1Port := "22"
proxy1User := "user"
proxy1Pass := "pass...