Mac
SSH
ShinobiLayer

HTTP Proxy経由でSSH接続する方法(Mac)

質問されたのでまとめておく。

WindowsではPuttyやTeraTermなどを使ってHTTP Proxy経由でのSSH構成をGUIから設定できる。一方、MacではせっかくTerminalがあるのでsshコマンドのオプションで同様のことを実現したい。
ネット上ではconnect-proxyなどを使う方法などが紹介されているが、Macには(多分)ncコマンドが初期導入されているので、コンポーネントの追加導入なしにHTTP Proxy超えが可能。

基本文例
$ ssh -o ProxyCommand='nc -X connect -x <ProxyServer>:<Proxy Port> %h %p' <ユーザー>@<接続先IP>
秘密鍵およびポート番号を指定した際の接続例
# 秘密鍵ファイル: ~/.ssh/id_rsa_xxx
# プロキシサーバー:proxy.yyy.com
# プロキシサーバーのポート番号: 8080
# SSH接続先サーバーのユーザー: root 
# SSH接続先サーバーのIPアドレス: zzz.zzz.zzz.zzz
# SSH接続先サーバーのポート番号(デフォルトは22): 20022
$ ssh -i ~/.ssh/id_rsa_xxx -o ProxyCommand='nc -X connect -x proxy.yyy.com:8080 %h %p' root@zzz.zzz.zzz.zzz -p 20022
.ssh/configに記述した際の接続例
$ cat .ssh/config
# 秘密鍵ファイル: ~/.ssh/id_rsa_xxx
# プロキシサーバー:proxy.yyy.com
# プロキシサーバーのポート番号: 8080
# SSH接続先サーバーのユーザー: root 
# SSH接続先サーバーのIPアドレス: zzz.zzz.zzz.zzz
# SSH接続先サーバーのポート番号(デフォルトは22): 20022
Host osc01
    Hostname zzz.zzz.zzz.zzz
    User root
    Port 20022
    ProxyCommand nc -X connect -x proxy.yyy.com:8080 %h %p
    IdentityFile ~/.ssh/id_rsa_xxx

$ ssh osc01