Windows版Gitで、直接接続できないリモートリポジトリにssh踏み台サーバ経由でアクセスする
すでに同内容記事多数なのですが、自分用メモとして記載します。
お目汚し失礼。
環境
ネットワーク的には下記のようになっています。
リポジトリが置いてあるrepo-server
には、fumidai
からしかsshログインできません。
- ローカルWindows PC(Windows 8.1)
fumidai
懐かしのTurboLinuxrepo-server
CentOS- Windows版Git git version 1.9.5.msysgit.0
準備
WindowsへGitをインストール
chocolateyを使うと簡単です。
chocolateyをインストールしたら、Admin権限のあるコマンドプロンプトでchoco install git
と実行するだけです。
踏み台サーバへconnectをインストール
踏み台サーバは懐かしのTurboLinuxのため、ncもconnectも入っていませんでした。
connect.c からconnect.c
をダウンロードします。
ダウンロードしたら踏み台サーバにコピーしてコンパイルします。
gcc -O2 connect.c -o connect
コンパイル成功したら適当なディレクトリにコピーします。
cp connect ~/bin/
Windows環境変数を設定
Windowsの環境変数HOME
を設定します。値は%USERPROFILE%
にします。ここに.ssh
ディレクトリを作成します。
sshを設定
ssh設定ファイルを作成
コマンドプロンプトを起動して、.sshディレクトリを作成します。
mkdir %HOME%\.ssh
config
ファイルを作成します。
notepad %HOME%\.ssh\config
内容は次のようになります。
config
Host fumidai
User sengoku
Hostname fumidai.local
Host repo-server
User guest001
Hostname repo-server.example.com
ProxyCommand "C:\Program Files (x86)\Git\bin\ssh.exe" fumidai /home/sengoku/bin/connect %h %p
最初のHost
はfumidai
へログインするための設定です。ユーザ名はsengoku、ホスト名はfumidai.localです。ユーザ名やホスト名は適宜変更してください。
2番目のHost
はrepo-server
へログインするための設定です。ユーザ名はguest001、ホスト名はrepo-server.example.comです。
fumidai
上で/home/sengoku/bin/connect
コマンドを起動し、プロキシ動作させています。
ユーザ名やホスト名は適宜変更してください。
sshの設定を確認
sshの設定が正しくできたか、まずは普通にsshしてみます。
コマンドプロンプトからsshを起動しfumidai
へログインしてみます。
"C:\Program Files (x86)\Git\bin\ssh.exe" fumidai
引数のfumidai
はHostに記述したものです。
うまくいったらリモートにもログインしてみます。
"C:\Program Files (x86)\Git\bin\ssh.exe" repo-server
うまくいかないときは、sshに-v
オプションをつけてdebug情報を見てみてください。
リモートリポジトリにアクセス
準備が整いましたので、リモートリポジトリからソースを取得します。
git clone ssh://repo-server/~/repos/myproj.git
ここではリポジトリは~/repos/myproj.git
にあります。適宜変更してください。
お疲れ様でした。