アプリケーション開発ポータルサイト
ServerNote.NET
ServerNote.NET厳選キャンペーン・クーポンはこちら!
カテゴリー【Git/GitHubAndroidWindows
社内のGitリポジトリに社外のAndroid StudioからSSHポートフォワードでClone/Pushする
POSTED BY
2020-12-19

ファイアウォール内側にある社内マシンにGITリポジトリがある場合、社外からは会社のゲートウェイサーバへSSH接続し、さらに社内マシンへのSSHポートへフォワードすることで操作できる。

Android StudioからClone/Pushすることを想定しているので、まずWindowsにGITを入れる。

https://git-scm.com/download/win

からダウンロードし、インストーラを実行。
注意すべきオプションはConfiguring the line ending conversionsで、改行コードの変換をするかどうか。
普通そのままのファイルでやりとりするはずなので、自分は

Checkout as-is, commit as-is

を選択し、変換は無しとした。インストール後GIT bashターミナルを起動し、

git config --global user.name hogeuser
git config --global user.email hogeuser@example1155.jp
git config --global core.quotepath false
git config --global core.autocrlf false

と最低現設定。user.nameは社内ローカルGITサーバのアカウント名と同一とする。

sshディレクトリの作成と秘密鍵を設置する。

cd
mkdir .ssh
cd .ssh
ここに社内ローカルGITサーバへSSH接続しているときの秘密鍵=id_rsaを設置する。
id_rsa

SSHサーバーとクライアントのログイン鍵ペアの作成、関係はこちらなど参照。

<ポートフォワードの準備>

ローカルループバックアダプタを追加する。

コントロールパネル→ハードウェアとサウンド→デバイスマネージャーを起動し、「ネットワーク アダプター」を選択する。
選択するとメニューの「操作」で「レガシ ハードウェアの追加」が選べるので、起動し、
「一覧から選択したハードウェアをインストールする」を選択、「ネットワーク アダプター」を選択。
一覧に
「製造元」Microsoft
「モデル」Microsoft KM-TEXT Loopback Adapter
があるので、これを選択してインストール。

コントロールパネルに戻って「ネットワークとインターネット」「ネットワークと共有センター」の左メニューの
「アダプターの設定の変更」を開く。

ここに「イーサネット2 Microsoft KM-TEST...」が現れるので、ダブルクリックして「プロパティ」を開く

「インターネット プロトコル バージョン 4(TCP/IPv4)」を選択し「プロパティ」を開く

「次のIPアドレスを使う」にして、

IPアドレス:169.254.1.1
サブネットマスク:255.255.255.0
デフォルト ゲートウェイ:空欄

「次のDNSサーバーのアドレスを使う」にして、

優先DNSサーバー:空欄
代替DNSサーバー:空欄

として「OK」。

「コマンドプロンプト」を「管理者として実行」して、

ipconfig

として、ループバックに上記IPが割り当てられていればOK。

ポートフォワードのツールはsshコマンドをはじめいくつかあるが、ここではPortforwarderを使用する。

http://toh.fuji-climb.org/pf/JP/download.html

ダウンロードして展開して、Portforwarderフォルダにconfit.txtを作成する。

config.txtでは、
「会社のゲートウェイサーバへの接続」情報と、
「接続してからの社内GITサーバへのSSHフォワード」情報を書く。

Host company-gateway
    HostName company-gateway.example1155.jp
    Port 22222
        # hostname or IP address

    User hogeuser
        # username on server. NEEDED

    LocalForward 169.254.1.1:22112 local-gitserver.example1155.jp:22

    Compression yes
        # if you need compression

ここでは外部から接続できる会社のゲートウェイサーバ(company-gate.example1155.jp)のSSH公開ポートが22222、
アカウント名がhogeuser、社内のローカルGITサーバ(local-gitserver.example1155.jp)のSSH公開ポートが22、
であるとして、

LocalForwardでさきほどのループバックアドレスに22112ポートを割り当て、社内GITサーバの22番へフォワードしている。

Portforwarderフォルダにゲートウェイサーバcompany-gate.example1155.jpへ接続するための秘密鍵「id_rsa」を設置する。

Portforwarder.exeを起動し、company-gatewayを選び、接続。エラー無く成功すればトンネルが無事掘られている。

これで社外Windowsマシンと社内ローカルGITサーバーがつながったので、Android Studioを設定する。

Android Studioを起動し、「Settings」→「Version Control」トップタブ
<Project>のVCSを「Git」に選びなおす

「Version Control」→「Git」を選択。

Path to Git executable: にインストールしたGITパスを設定、たいていは

C:\Program Files\Git\bin\git.exe

であるはず、「Test」が成功したら「OK」する。

なお、
「Warn if CRLF line separators are about to be committed」は
「改行コードがCRLFのファイルをコミットしようとしたら警告出すか?」
という意味だが、これはgitconfigのcore.autcrlfが、
false: 自動変換しない: なら上記は「チェックを外す」、
input,true: 自動変換する: なら上記は「チェックしたまま」がいい。
→わかりにくいので別記事にまとめました

社内GITサーバーのプロジェクトをクローンする。社内GITサーバーのプロジェクトリポジトリが

local-gitserver.example1155.jp:/git/TestProject.git

であるとすると、

Android Studioメニューで「Check out project from Version Control」「Git」を選択し、「URL」に

ssh://hogeuser@169.254.1.1:22112/git/TestProject.git

と、ポートフォワードのアドレス・ポートとローカルサーバのユーザ名を指定記述し「Clone」できれば完了!!

チェックアウトしたプロジェクトを起動し、Version ControlタブでLogなどが見れればOK。

ローカルGITサーバー側:GITの設定はこちら

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

☆ServerNote.NETショッピング↓
ShoppingNote
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】