ちょっと前に Golangでsshの多段プロキシSocks5プロキシ経由での接続について調べたが、今回はhttpプロキシ経由の場合どうするのかについて調べてみた。

残念ながらhttpプロキシ経由の通信(CONNECTメソッドを利用したプロキシ)で*net.Connを取得できるライブラリは無いようで、そのあたりについては書かないとならないようだ。 幸いにも サンプルコード を書かれている人がいたので、それを使ってhttpプロキシを経由したssh接続のコードを記載する。

実行可能なコードはこちらにもおいてある。

ssh_term_http_proxy.go
...

Golangでsshへの接続を行う際、ssh proxyはどうやってやるんだろうと思ったんで調べてみた。 実装は結構簡単で、以下のように一度Proxyにsshでログイン後、ログイン対象サーバへの接続をProxyで作成してやるという流れでいけるようだ。

抜粋。動作するコードはこちらに記載。

ssh_term_proxy.go
// proxy1の情報 proxy1Host := "proxy1.host.local" proxy1Port := "22" proxy1User := "user" proxy1Pass := "pass...

前にGolangでsshクライアントを作る際、どうにも制御キーをうまく渡せずに致し方なくsshコマンドを実行させるような処理を書いてたのだけど、ちょっと前に見かけたsshwというツールのソースを見てたところ、sshコマンドを実行せずにそのあたりが正常に動いていた。 で、なんでだろうと調べて見たところ、どうやら ssh/terminal.MakeRaw() 等を使ってうまくそのあたりを実装していたようだ。

こちらにもソースを上げてるのだけど、以下サンプル。

term_ssh.go
package main import ( "fmt" "os"...

Golangでファイルやディレクトリのパーミッションを取得しようとした際、オブジェクトとして取得できてしまうのでどうやったら0644,0700といった形式で取得すればいいのかな?と少し手こずったので、備忘として残しておく。 以下のように、printfで"%04o"でパーミッションを数字として出力することができるようだ。


Golangの勉強でsshのラッパーコマンド『lssh』というのを作ってみた

最近ちょこちょこGoを勉強するようにしてたのだが、せっかくなので何か作ってみようと考えた。 で、なんかないかなと考えたところ、結構前にPythonでsshのラッパー書いてたのを思い出したので、今回はそれをGolangで書き直してみた。 sshのラッパーなので、基本Linux/Mac OS Xでしか動かない(Windowsは対象外)になってる。

作り直しなので前作ったPythonのラッパーと基本は変更せず、「\~/.lssh.conf」というtomlファイルにログイン情報を記述してコマンドを実行するだけにした。 (オプ...