Windows版VS Codeでプロキシのパスワード入力を自動化する
認証プロキシ配下でVS Codeを利用していると、 Extensions
を開いたときとかに、以下のようなダイアログが表示されます。
毎回ユーザー名とパスワードを入力するのはしんどいので、自動入力できないか調査したところ、紆余曲折ありましたが、自動入力できることがわかったので、紹介します。
結果だけ知りたい方は、「解決編」まで読み飛ばしてください。
調査編:VS Code標準機能だけでは無理っぽい
VS Codeの公式ページを読んでみると、どうやらVS Codeのネットワーク機能はChromiumのネットワーク機能を利用しているようです。
Chromiumの公式ページを読んでみましたが、自動入力には対応していなさそうでした。
settings.jsonをためしてみたけどダメだった
settings.json
に以下のように追加してみましたが、とくに変化はありませんでした。
{
"http.proxy": "http://(ユーザー名):(パスワード)@(ホスト):(ポート)",
"http.proxyStrictSSL": false
}
上記の指定方法だと、(ホスト):(ポート)
は効きますが、 (ユーザー名):(パスワード)
の方は効いていないみたいです。
--proxy-server
をためしてみたけどダメだった
VS Codeの起動オプションに、以下のように --proxy-server
を追加してみましたが、ダメでした。
"C:\Program Files\Microsoft VS Code\Code.exe" --proxy-server=http://(ユーザー名):(パスワード)@(ホスト):(ポート)
やはり、 (ホスト):(ポート)
は効きますが、 (ユーザー名):(パスワード)
の方は効いていないみたいです。
--proxy-auth
をためしてみたけどダメだった
VS Codeの起動オプションに、以下のように --proxy-auth
を追加してみましたが、ダメでした。
"C:\Program Files\Microsoft VS Code\Code.exe" --proxy-server=http://(ホスト):(ポート) --proxy-auth=(ユーザー名):(パスワード)
やはり、 (ホスト):(ポート)
は効きますが、 (ユーザー名):(パスワード)
の方は効いていないみたいです。
解決編:stone使えばできた
VS Code標準の機能ではダメそうだということで、他の方法を調べてみたところ、stoneというものを知りました。
PC内に常駐する新しいProxyサーバー(以後stoneサーバーと呼びます。)を構築し、VS Codeのすべての通信をstoneサーバーを介して行うことで、stoneサーバーでプロキシの認証情報を付加するという手法のようです。
stoneをインストールする
stoneの導入については、以下の記事がわかりやすかったので、こちらをご参照ください。
ただし、実施するのはこの記事の サービス化と起動
までです。今回、IEは関係ないので、 ブラウザの設定
以降はやらなくて大丈夫です。
(というか、やってしまうとVS Code以外のツールにも影響してしまうので、やらない方が安全です。)
Qiita / stoneであの煩わしいプロキシ認証を自動化する
上記の記事の手順通りにやると、 http://localhost:3200
というURLでstoneサーバーが起動します。
VS Codeの --proxy-server
にstoneサーバーを設定する
VS Codeの通信がstoneサーバーを経由するように設定します。
コマンドプロンプトで以下のコマンドを実行してみてください。
"C:\Program Files\Microsoft VS Code\Code.exe" --proxy-server=http://localhost:3200
VS Codeが起動すると思います。
起動しなかった場合、VS Codeのインストール先が違うのかもしれません。例えば、Chocolateyでインストールした場合は、以下のパスになるそうです。
%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe --proxy-server=http://localhost:3200
適宜、ご自身のPC環境に合わせてパスを変更してみてください。
コマンドでVS Codeが起動できたら、Extensions
を開いてみましょう。
プロキシのユーザー名とパスワードが聞かれなかったと思います!
あとは上記のコマンドを以下のようにショートカットにしてしまえば、毎回コマンドを打たなくて大丈夫になります!
以上、おつかれさまでした。