バッチファイルでSSHのプロキシ設定を有効・無効にしたい
バッチファイルでSSHのプロキシ設定を有効にしたり、無効にしたりできないか調査したところ、以下の記事を見つけました。
こちらと同じことをWindowsでもやれないか試してみました。
Macの場合は上記の記事をご参照ください。
2種類の config
ファイルを用意する
SSHの設定ファイルをプロキシ無効時用・有効時用の2種類用意します。
例としてGitHubに接続する場合を考えます。
config_no_proxy.txt
を用意する
まず、 %USERPROFILE%\.ssh\config_no_proxy.txt
というファイルを作成します。これはプロキシ無効時に利用する config
ファイルです。
Host github.com
HostName ssh.github.com
User git
Port 443
IdentityFile "C:\Users\ユーザー名\.ssh\id_rsa"
IdentityFile
には、 %USERPROFILE%\.ssh\id_rsa
や ~/.ssh/id_rsa
といった記述は使えず、 C:\Users\ユーザー名\.ssh\id_rsa
のようにフルパスで記述する必要があります。(少なくとも私の環境ではそうでした)
config_proxy.txt
を用意する
次に、 %USERPROFILE%\.ssh\config_proxy.txt
というファイルを作成します。これはプロキシ有効時に利用する config
ファイルです。
Host github.com
HostName ssh.github.com
User git
Port 443
IdentityFile "C:\Users\ユーザー名\.ssh\id_rsa"
ProxyCommand connect.exe -H ユーザー名:パスワード@ホスト:ポート %h %p
ProxyCommand
という行が追加されています。この行に登場する ユーザー名
, パスワード
, ホスト
, ポート
には、プロキシの設定値を入力してください。
バッチファイルでプロキシを無効にする
プロキシを無効にしたい場合は、 %USERPROFILE%\.ssh\config
のシンボリックリンク先を config_no_proxy.txt
にします。
以下のバッチファイルを 管理者権限 で実行してください。
rem 既存のシンボリックリンクを削除する
del %USERPROFILE%\.ssh\config
rem config_no_proxy.txt にリンクを貼る
mklink %USERPROFILE%\.ssh\config %USERPROFILE%\.ssh\config_no_proxy.txt
これで、プロキシが無効になりました。
バッチファイルでプロキシを有効にする
プロキシを有効にしたい場合は、 %USERPROFILE%\.ssh\config
のシンボリックリンク先を config_proxy.txt
にします。
以下のバッチファイルを 管理者権限 で実行してください。
rem 既存のシンボリックリンクを削除する
del %USERPROFILE%\.ssh\config
rem config_proxy.txt にリンクを貼る
mklink %USERPROFILE%\.ssh\config %USERPROFILE%\.ssh\config_proxy.txt
これで、プロキシが有効になりました。
さいごに
バッチファイルでSSHのプロキシ設定を有効にしたり、無効にしたりできるようになりました。
以下の記事を参考にさせていただきました。ありがとうございました。