私の仕事場では、社内にプロキシサーバが設置されており、通常の SSH ポート(22番)が外部サーバに対して使用できません。git みたいなオシャレなプロトコルには対応していないのです。しかしそれでも、GitHub に接続する必要にかられることがあります。
ここでは、HTTP ポート(80番) と HTTPS ポート(443番) はどのプロキシでも接続できるので、443番ポートを使用して SSH で GitHub に接続する方法をご紹介します。
環境変数を設定する
まずは必要な環境変数を設定します。 以下のような情報でプロキシに接続するとします。
項目 | 値 |
---|---|
ユーザ名 | user |
パスワード | passwd |
プロキシサーバ | your.proxy-server.com |
ポート番号 | 8080 |
プロキシから除外 | localhost,127.0.0.1,192.168.0.0/24 |
以下のスクリプトを .bashrc に記述します。また私は個人用途のサーバで別のユーザを作成したりする開発環境なので、 /etc/profile.d/proxy.sh というファイルを作って、そこに突っ込んでいますが、オススメはしません。
1 2 3 4 5 6 7 8 9 |
|
connect のインストール
プロキシを中継するように connect をインストールします。
1 2 3 4 5 6 |
|
パッケージ管理ツールでインストールできない場合は、以下のコマンドで自力でビルドします。
1 2 3 |
|
.ssh/config を設定する
.ssh/config に以下の設定を追加します。IdentityFile
には GitHub で使用する秘密鍵を ~/.ssh/id_rsa
のように、your.proxy-server.com
にはプロキシサーバ名とポート番号を編集します。
1 2 3 4 5 6 7 8 |
|
ここでは、SSH を使用する際に443番ポートを使用し connect でプロキシを中継して GitHub と通信するようにしています。
さらに、新規に .ssh/config を追加した場合は、アクセス権を以下のように設定しないと接続に失敗します。Unix に慣れている方には常識かも知れませんが、私は最初にアクセス権の設定に、グループへの読み書き権限が付与されており、接続エラーで結構ハマりました。
1
|
|
接続を確認する
SSH で GitHub に接続できるか確認します。以下のようにコマンドを実行し、以下のような出力結果になれば接続は成功です。
1 2 3 4 5 6 |
|
毎回 ssh のパスフレーズを入力するのを省略したい場合は、以下のコマンドを実行すると、それ以降のパスフレーズの入力を省略することができます。 ~/.ssh/id_rsa
はご自分の秘密鍵のファイル名に読み替えて入力してください。
1 2 |
|
これで以下のコマンドを実行すれば、443番ポート経由で SSH のアクセスが可能になってる思います。
試しに octocat/Spoon-Knife リポジトリからクローンしてみてください。
1
|
|
git:// プロトコルにも対応する
冒頭でプロキシが git プロトコルに対応していないと書きましたが、調べているうちに、git プロトコルに対応できることがわかりました。
まず、以下のようなスクリプトを、例えば $HOME ディレクトリに記述します。ファイル名は git-proxy.sh とします。
1 2 |
|
記述したスクリプトのアクセス権を設定します。
1
|
|
次に以下の設定を .bashrc に記述します。
1
|
|
source .bashrc
を忘れずに実行して、以下のようにコマンドを実行して接続を確認します。
1
|
|