0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

入力履歴を残さず社内プロキシを乗り越える

Posted at

プロキシ認証するには

Ubuntuでは環境変数にユーザー名とパスワードを記述する必要がある。

以下を設定するとプロキシ経由で外に行けます。

export http_proxy="<ユーザー名>:<パスワード>@proxy.hoge.com:port/"
export https_proxy="<ユーザー名>:<パスワード>@proxy.hoge.com:port/"

しかし、この設定だとパスワードを平文で保存してしまうのであんまりよくない。(共有のターミナルの場合、printenvコマンドですぐにユーザー名とパスワードを見れてしまう)

下記のシェルスクリプトを使って以下のコマンドを入力すれば、

sudo -i
./xxx.sh <コマンド>

とすればプロンプト上でユーザー名とパスワードを入力するのでよりセキュア(なはず)。

xxx.sh
unset password
unset name
prompt="Enter name:"
while IFS= read -p "$prompt" -r -n 1 char
do
    if [[ $char == $'\0' ]]
    then
        break
    fi
    prompt=""
    name+="$char"
done
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
    if [[ $char == $'\0' ]]
    then
        break
    fi
    prompt='*'
    password+="$char"
done

function urlencode() {
    # urlencode <string>
    local length="${#1}"
    for (( i = 0; i < length; i++ )); do
        local c="${1:i:1}"
        case $c in
            [a-zA-Z0-9.~_-]) printf "$c" ;;
            *) printf '%%%02X' "'$c"
        esac
    done
}

encoded_name=$(urlencode $name)
encoded_pw=$(urlencode $password)

http_proxypath="http://$encoded_name:$encoded_pw@proxy.hoge.com:port/"
https_proxypath="http://$encoded_name:$encoded_pw@proxy.hoge.com:port/"

export http_proxy=$http_proxypath
export https_proxy=$https_proxypath

exec "$@"

unset http_proxy
unset https_proxy
0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?