大学内のネットワーク等、管理されたネットワークでは特定のポートしか許さなかったり proxy サーバ経由の通信が必須になる等の理由で外部へ ssh 接続ができない。 そこで、本稿では SOCKS 経由での ssh を可能にする connect.c の導入と使い方を説明する。
検索しにくい名称なのでわかりづらいが upstream はこのリポジトリの模様。
Ubuntu では公式リポジトリにあるので
$ sudo apt install connect-proxy
Mac では homebrew を用いて
$ brew install connect
でインストールできる。
connect を使用して ssh で接続するには
ssh user@server.hoge -o "ProxyCommand connect -H proxyserver.hoge:port %h $p"
のように-o
オプションをつける。エラーが生じる際は
ssh user@server.hoge -o "ProxyCommand connect -d -H proxyserver.hoge:port %h $p"
のように connect に-d
オプションをつけると詳細に過程が出力されるのでそれを参考にするとよい。
上記のコマンドを毎回打つのは面倒なので ~/.ssh/config
に設定を記述しておくと良い。例として github と bitbucket の場合を載せる。
Host github.com
User git
HostName ssh.github.com
Port 443
ProxyCommand connect -H proxyserver.hoge:port %h %p
Host bitbucket.org
User git
HostName altssh.bitbucket.org
Port 443
ProxyCommand connect -H proxyserver.hoge:port %h %p
テストは次のコマンドで実行できる。
ssh -T git@github.com
ssh -T git@bitbucket.org
config の 設定により、git clone
なども意識することなく実行できる。