lisz-works

プログラミングと興味を貴方に

UbuntuにSSH鍵を使ってパスワード管理する仕組みの作成

【スポンサーリンク】

Linuxペンギン

こんにちわlisです!

UbuntuにSSH鍵を使ってパスワード管理する仕組みの作成してみました!

なにするの?

パスワードをSSH鍵を使って保護したファイルで保存して使います。

使用例としては、ID/パスワードでのログインが必要なWebサイトにアップされているファイルをダウンロードするのに使いました。

$ curl -u <id>:<password> -OL

のようにすればダウンロードできますが、よく使うページをalias登録しようとしました。

しかしそのまま書くとID/パスワードが丸見えなので、暗号化のための仕組みを作成しました。

作成するファイル

  • SSH鍵
  • settingpass
  • setpass
  • getpass

SSH鍵は個人で作成する必要があります。

基本的にshellscriptはコピペで作成できます。

settingpassについては

  1. SSH鍵のパス
  2. パスワードファイルを置くディレクトリ

この2項目の設定値だけ変更すれば使うことができます。

SSH鍵の作成

この記事を元にSSH鍵を作成します。

今回はlocal-keyという名前で作成してみました。

$ ssh-keygen -t rsa -b 4096 -C "{name}"

共通shellscriptファイルの作成

実際に使うファイルとして、setpassgetpassの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

参考

コチラを参考にしました。ありがとうございました!

qiita.com

あとがき

UbuntuにSSH鍵を使ってパスワード管理する仕組みの作成でした!

そもそもcurlでダウンロードするためのコマンドを忘れがちだったのでalias登録しました。

しかしログインが必要だと更に入力が……という障害があって今回のようなものを作りました。