次の条件に当てはまる場合に、踏み台サーバ経由で社内ローカルネットのgitリポジトリに接続する方法
- 社内のローカルネットにgitのリモートサーバがあって、外部からは直接接続できない
- メンテナンス等用途の踏み台サーバがあり、踏み台からならgitサーバにも接続できる
手順
- SSHの Dynamic Port Forwarding を開始する。
次のように sshで踏み台サーバに接続する。
$ ssh -D <ポート番号> -N <踏み台サーバアドレス>
例えば、次のように実行すると、socks5のプロキシが localhost:8888
で立ったことになり、fumidai.jp経由で向こう側のネットワークにあるサーバにアクセスできる。
$ ssh -D 8888 -N fumidai.jp
以下ポート番号は8888として説明する。
- gitのプロキシの設定
接続したいリポジトリで 次のように http.proxy
を設定する。
$ git config http.proxy socks5://localhost:8888
するとリポジトリの .git/config
に設定が追加される。
もし、どのリポジトリにもこのプロキシを適用するなら、-g
オプションを付けてグローバルな設定にすれば良い。
- あとは普通にgitで接続する。
これで接続できるので、git pull
なり、git fetch
してリモートの変更を取り込める。もちろんgit push
だってできる。
ただ、ホスト名を接続先のローカルネット内の内部DNSで解決している場合にはホスト名では接続できない。その場合はホスト名をローカルネット内のローカルのIPアドレスで指定する。
ブラウザで接続する
踏み台の向こうのgitサーバが、GithubとGitlabとかといったブラウザでアクセスできるものの場合、ブラウザのプロキシとして使うこともできる。
chrome や Firefox でFoxyProxy等のプロキシ設定アドオンを使うと、ON/OFFが簡単で便利
FoxyProxyを使う場合には最低限、次のように設定すればよい。
- 手動プロキシ設定
- ホストまたはIPアドレス:localhost
- ポート:8888
- SOCKSプロキシ:ON、SOCKS v5 を選択
あとはブラウザでのこのプロキシ設定を有効にして、普通にアクセスするだけ。