
SSH経由のHTTP/HTTPSプロキシ。
go install github.com/justmao945/mallory/cmd/mallory@latestデフォルトのパスは$HOME/.config/mallory.jsonで、プログラム起動時に設定できます
mallory -config path/to/config.json
内容:
id_rsa は秘密鍵ファイルへのパスです。ssh-keygenで生成できます。local_smart は、送信先ホストをスマートに検出するHTTPプロキシを提供するローカルアドレスです。local_normal はlocal_smartと似ていますが、送信先ホストを検出せずにすべてのトラフィックをリモートSSHサーバー経由で送信します。remote はSSHサーバーのリモートアドレスです。blocked はプロキシを使用する必要があるドメインのリストです。リストにないドメインは直接サーバーに接続します。{
"id_rsa": "$HOME/.ssh/id_rsa",
"local_smart": ":1315",
"local_normal": ":1316",
"remote": "ssh://[email protected]:22",
"blocked": [
"angularjs.org",
"golang.org",
"google.com",
"google.co.jp",
"googleapis.com",
"googleusercontent.com",
"google-analytics.com",
"gstatic.com",
"twitter.com",
"youtube.com"
]
}
設定ファイル内のブロックリストは、更新時に自動的に再読み込みされます。手動で行うこともできます:
# シグナルを送信して再読み込み
kill -USR2 <malloryのPID>
# または、httpリクエストを送信してreloadコマンドを使用
mallory -reload
1315のlocalhostに設定します。http_proxyとhttps_proxyをlocalhost:1316に設定します。mallory -suffix www.google.com
# インストール: go get github.com/justmao945/mallory/cmd/forward
# ポート20022を通過するすべてのトラフィックがdestination.com:22に転送されます
forward -network tcp -listen :20022 -forward destination.com:22
# localhost:20022経由でdestination:22にssh接続できます
ssh root@localhost -p 20022
次の設定ファイルを考えます:
$ cat mallory.json
{
"id_rsa": "/tmp/id_rsa",
"local_smart": ":1315",
"local_normal": ":1316",
"remote": "ssh://[email protected]:22"
}
コンテナ(zoobab/mallory)は、設定ファイル、SSHキーをマウントし、2つのポートをマッピングして実行できます:
$ docker run -v $PWD/mallory.json:/root/.config/mallory.json -p 1316:1316 -p 1315:1315 -v $PWD/.ssh/id_rsa:/tmp/id_rsa zoobab/mallory
mallory: 2020/03/30 16:51:10 main.go:22: Starting...
mallory: 2020/03/30 16:51:10 main.go:23: PID: 1
mallory: 2020/03/30 16:51:10 config.go:103: Loading: /root/.config/mallory.json
mallory: 2020/03/30 16:51:10 main.go:30: Connecting remote SSH server: ssh://[email protected]:22
mallory: 2020/03/30 16:51:10 main.go:38: Local normal HTTP proxy: :1316
mallory: 2020/03/30 16:51:10 main.go:48: Local smart HTTP proxy: :1315
私のユースケースは、SSH踏み台サーバーの背後にあるKubernetesクラスター(Openshift)に接続することでした:
$ export http_proxy=http://localhost:1316
$ export https_proxy=https://localhost:1316
$ oc login https://master.mycluster.zoobab.com:8443
Authentication required for https://master.mycluster.zoobab.com:8443 (openshift)
Username: bhenrion
Password:
Login successful.