こんにちわlisです!
UbuntuにSSH鍵を使ってパスワード管理する仕組みの作成してみました!
- なにするの?
- 作成するファイル
- SSH鍵の作成
- 共通shellscriptファイルの作成
- パスワードをセットするshellscriptの作成
- パスワードを取得するshellscriptの作成
- 使ってみる
- 参考
- あとがき
なにするの?
パスワードをSSH鍵を使って保護したファイルで保存して使います。
使用例としては、ID/パスワードでのログインが必要なWebサイトにアップされているファイルをダウンロードするのに使いました。
$ curl -u <id>:<password> -OL
のようにすればダウンロードできますが、よく使うページをalias
登録しようとしました。
しかしそのまま書くとID/パスワードが丸見えなので、暗号化のための仕組みを作成しました。
作成するファイル
- SSH鍵
- settingpass
- setpass
- getpass
SSH鍵は個人で作成する必要があります。
基本的にshellscriptはコピペで作成できます。
settingpassについては
- SSH鍵のパス
- パスワードファイルを置くディレクトリ
この2項目の設定値だけ変更すれば使うことができます。
SSH鍵の作成
この記事を元にSSH鍵を作成します。
今回はlocal-key
という名前で作成してみました。
$ ssh-keygen -t rsa -b 4096 -C "{name}"
共通shellscriptファイルの作成
実際に使うファイルとして、setpass
とgetpass
の2つを作成していきます。
この2つで共通の設定を持つためのshellscript「settingpass」を作成します。
#!/bin/sh # SSH鍵のパス KEY_FILE=${HOME}/.ssh/local-key # パスワードファイルを置くディレクトリ PASSWORD_DIR=${HOME}/.config/passwords
パスワードをセットするshellscriptの作成
パスワードをセットするためのshellscript「setpass」です。
#!/bin/sh if [ $# -lt 2 ]; then # arg num < v echo arg: name password exit 0 fi # load settings . ${HOME}/bin/settingpass target=${PASSWORD_DIR}/${1}.rsa password=${2} # register password echo ${password} | openssl rsautl -encrypt -inkey ${KEY_FILE} > ${target}
パスワードを取得するshellscriptの作成
パスワードを取得するshellscriptの作成「getpass」です。
#!/bin/sh if [ $# -lt 1 ]; then # arg num < v echo arg: name exit 0 fi # load settings . ${HOME}/bin/settingpass target=${PASSWORD_DIR}/${1}.rsa # register password openssl rsautl -decrypt -inkey ${KEY_FILE} -in ${target}
使ってみる
さて、最初に使用例として話した、ログインが必要なWebサイトにアップされているファイルをダウンロードするためのalias
を作成します。
必要情報を登録。
ログイン情報は
項目 | 値 |
---|---|
ID | user |
パスワード | pass |
これをhoge
という名前で保存します。
$ addpass hoge user:pass
さてalias
登録します。
alias dl='curl -u `getpass hoge` -OL'
あとは使うだけ!
$ dl https://exsample.com/file.zip Enter pass phrase for /home/lis/.ssh/local-key: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 46022 100 46022 0 0 55314 0 --:--:-- --:--:-- --:--:-- 55314
参考
コチラを参考にしました。ありがとうございました!
あとがき
UbuntuにSSH鍵を使ってパスワード管理する仕組みの作成でした!
そもそもcurl
でダウンロードするためのコマンドを忘れがちだったのでalias
登録しました。
しかしログインが必要だと更に入力が……という障害があって今回のようなものを作りました。