📚

SSH_ASKPASSの使い方について

2022/11/11に公開

expectやsshpassを使わずにシェルでSSHパスワード認証を自動化する
の記事はたくさんある

https://github.com/huan/sshpass.sh
https://qiita.com/wadahiro/items/977e4f820b4451a2e5e0
https://www.exratione.com/2014/08/bash-script-ssh-automation-without-a-password-prompt/

けど、SSH_ASKPASSの中身を分けて、中身まで載ってるサンプル見つけられなかったので。

構成

.
|-- askpass
`-- ssh.sh

askpass

#!/bin/sh
echo "password"

ssh.sh

#!/bin/sh

HOST=[hostname]
USER=[username]
CMD="[command]"

export SSH_ASKPASS=`pwd`/askpass
export DISPLAY=dummy:0
setsid ssh $USER@$HOST $CMD

qiitaのコメントでも触れてる(仕組みはコメントというかmanままなので割愛)方がいますが、
SSH_ASKPASS自体が、execute the programしてくれるので、あえてexecは不要です。
(askpassファイルには実行権限だけ必要。execなので)

実行結果サンプル(OSを表示)

実行元で表示→コマンド経由でリモート先を表示
# cat /etc/system-release
Amazon Linux release 2 (Karoo)
# ./ssh.sh
AlmaLinux release 8.6 (Sky Tiger)

Discussion