一般ユーザーへのプロキシ認証設定
プロキシ認証はお好きですか? 俺は大嫌いだ。
社内プロキシとの戦いは終わりません。
前回はapt
コマンド単体に対するプロキシ認証方法についてでした。
当たり前ですが、apt.conf.d
で設定したプロキシ認証はapt
コマンドに対してのみ機能するので、curl
やpip
といった一般ユーザー状態で他のインターネットへのアクセスを伴うコマンドには機能しません。
というわけで今回は一般ユーザーの環境変数からプロキシ認証を行っていきます。
また、その際にプロキシ認証のパスワードに記号を使っている際の注意点も提示します。
環境
Ubuntu.20.04 LTS
プロキシサーバーを経由する際はパスワードによるユーザー認証を要求する
手順
-
printenv
で現状の環境変数を出力し、proxyに関する記述が無いことを確認します。
$ printenv
-
~/.bashrc
または~/.zshrc
に以下の記述を追記。今回はbashrcにやっていきます。
$ cp ~/.bashrc ~/.bashrc_org #念のためバックアップ
$ vim ~/.bashrc
--------------------------------------------------------
# http://<id>:<password>@X.X.X.X:<port番号>
_PROXY=<プロキシURL>
# httpおよびhttpsを使う際に参照するプロキシのURLをexport
export http_proxy=${_PROXY}
export https_proxy=${_PROXY}
# localhostなどの、プロキシを経由しない社内ネットワークなどのアドレス
export no_proxy=localhost,127.0.0.1
unset _PROXY
_PROXY
で定義したプロキシURLを${_PROXY}
に渡していることになります。
また開発などでlocalhostを使用している際には、no_proxy
でプロキシを経由しない設定を行う必要があります。
「Apacheのlocalhost:xxxxが出てこないんだけど!?」と私はここでハマりました。
-
source
コマンドで設定を読み込ませます。
$ source ~/.bashrc
- あとは
printenv
でproxyに関する記述があるか確認したり、wget
やcurl
がインターネットに届くかを確認してください。
パスワードに記号を使ってる際の注意点
もうひとつのハマったポイントです。
どこの職場とかでも、「パスワードは大文字小文字の英数字と記号で◯文字以上」といったセキュリティルールがあると思いますが、その際には記号の前にエスケープ文字を差し挟む必要があります。
例えば、下記のパスワードでexportからプロキシ認証を行おうとしても、エラーが出ます。
パスワード例:Hogehoge1234!
$ export http_proxy=http://<ユーザー名>:Hogehoge1234!@x.x.x.x:<port番号>
-bash: !@x.x.x.x: even not found
これは、パスワードの中にある!
が文字列ではなく、history
コマンドのオプションとして機能しているためによるものです。
このため、!
や"
といった、シェル上では何らかの機能を持つ記号を文字列として認識させる際はその文字の前に\
バックスラッシュ(windowsの日本語環境なら¥
)といったエスケープ文字を差し込む必要があります。
というわけで、パスワードが「Hogehoge1234!」なら、export
コマンドは下記のように記述する必要があります。
$ export http_proxy=http://<ユーザー名>:Hogehoge1234\!@x.x.x.x:<port番号>
これで、一般ユーザー状態で用いるコマンドのほとんどはインターネットへ到達すると思います。
また、ユーザー名とパスワードに関しては平文で保存されるので、設定を記述したファイルはパーミッションでアクセスを制限するなどの措置を取ってください。
参照サイト