SSHパスワードの自動化

Hetemlのように、鍵を使用せずにパスワードのみでSSH接続する場合に、パスワードをいちいち入力しなくて済むようにするためのメモ。
ローカルの秘密鍵を開くためのパスフレーズは別の方法じゃないとできないので今回はパス。
sshpassをインストール
.bashrcに条件分岐のコードを記入
# --- smart-ssh wrapper (.sshpass ファイル版) ---
ssh() {
if [ $# -eq 0 ]; then
command ssh
return
fi
local host="$1"; shift
local pwfile="$HOME/.sshpass/$host.pw"
if [ -f "$pwfile" ]; then
local PW
PW="$(cat "$pwfile")"
SSHPASS="$PW" sshpass -e ssh \
-o PubkeyAuthentication=no \
-o PreferredAuthentications=password \
"$host" "$@"
unset PW SSHPASS
else
command ssh "$host" "$@"
fi
}
# --- end ---
専用のディレクトリを作成して、そこにホストごとのパスワードが記載されたファイルを保存。
パーミッションは600にする。
これで、.ssh/configに書かれているホスト名でログインできるようになる。
これで動かない場合は、「接続先の信頼確認」で止まっている可能性が大。
その場合、known_hostsに追加するために以下を実行。
パスワードを求められるので、パスワードを入力してログイン。
これでknown_hostsに登録されるので次回以降、自動でログインできる。
もしくは、.ssh/configのホスト設定に、StrictHostKeyChecking accept-new を追加すれば完全自動化できる。