LoginSignup
17
16

More than 5 years have passed since last update.

【GitHub】Windows10+プロキシ環境でSSH接続を試みた話

Last updated at Posted at 2019-04-12

経緯

研究室に配属されPCが支給されたのだが、GitHubにSSH接続が出来ない。理由は単純で、学内ネットワークでは22番ポートが閉じており、プロキシ経由で443番ポートを通して通信する必要があるからである。この設定自体は単純で、調べれば出てくるのだが私の環境ではどうも一筋縄ではいかなかった。同じような方のために、私の環境で使用した方法を書いておく。

SSHでプロキシを設定する。

.ssh/configを編集し、次のように記述する。

.ssh/config
Host github.com
    User git
    Hostname ssh.github.com
    IdentityFile ~/.ssh/id_rsa
    Port 443
    ProxyCommand connect.exe -H <プロキシサーバのアドレス>:<ポート> %h %p
    AddressFamily inet
Host ssh.github.com
    User git
    Hostname ssh.github.com
    IdentityFile ~/.ssh/id_rsa
    Port 443
    ProxyCommand connect.exe -H <プロキシサーバのアドレス>:<ポート> %h %p
    AddressFamily inet

上記のように記述したけど無理だった。どうやら、通常C:/Program files/Git/binに配置されているconnect.exeが私の環境では無かったようなのでエラーを吐いたようだ。
こうなると、connect.exeのソースコードを自前でコンパイルする必要がある。

connect.cのコンパイル

connect.exeのソースコードは、connect.cというものらしい。gistに公開されているのでこれをダウンロードしてコンパイルすればいいのだ。LinuxとWindowsではソケット通信に使用するライブラリが異なるため、リンカを設定する必要があることに注意する。コマンドライン上で次のように実行すればconnect.exeが作成される。

gcc -o connect -lwsock32 connect.c -lws2_32

作成されたconnect.exeは、適当な場所に配置する。C:/Program files/Git/binに配置するときはスペースが含まれることに注意する。何もしないとエラーを吐くのでエスケープ文字等で対処する。私はめんどくさいのでCドライブ直下に配置した。

.ssh/configを書き直す

.ssh/configを、次のように書き直す。

.ssh/config
Host github.com
    User git
    Hostname ssh.github.com
    IdentityFile ~/.ssh/id_rsa
    Port 443
    ProxyCommand <connect.exeの絶対パス> -H <プロキシサーバのアドレス>:<ポート> %h %p
    AddressFamily inet
Host ssh.github.com
    User git
    Hostname ssh.github.com
    IdentityFile ~/.ssh/id_rsa
    Port 443
    ProxyCommand <connect.exeの絶対パス> -H <プロキシサーバのアドレス>:<ポート> %h %p
    AddressFamily inet

GitHubにテスト接続を行い、"welcome to ~"的なことが表示されてたら成功。

参考文献

17
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16