背景:
私は地元実行する必要があるスクリプト地元でSSH 接続を確立するための前提条件として。
スクリプトはすでに動作していますが、現在のところ、ユーザーはスクリプトを実行してから SSH 接続を行う必要があります (2 つの手順)。それが一気に実現することを望みます。
ユーザーの視点から見たスクリプトの実行例:
$ /scripts/generate-mfa-auth.sh
MFA Code: 12345
Configuring authorized_keys...
Success. You can now connect over ssh.
$ ssh [email protected]
目標 / 問題:
このスクリプトでは、ssh 構成からトリガーされたときにユーザー入力を許可したいと思います。
例えば、以下のssh設定ではスクリプトは適切に実行されますが、ユーザーが対話できないユーザーにはスクリプトの標準出力は表示されません。
Match host bastion* exec "/scripts/generate-mfa-auth.sh"
Host bastion1.local.example.com
IdentityFile ~/.ssh/my-bastion-ssh-key
Host *local.example.com !bastion1.local.example.com
IdentityFile ~/.ssh/my-target-ssh-key
ProxyCommand ssh [email protected] -W %h:%p
質問:
このスクリプトを動作させる方法はありますかインタラクティブにssh config から呼び出されたとき?
答え1
SSH設定でこれを行う方法は知りませんが、かなり一般的な解決策は、の早い段階でインストールされるスクリプトを作成することですPATH
。たとえば、
install -m 0755 -o root -g root /dev/null /usr/local/bin/ssh
cat <<EOF > /usr/local/bin/ssh
#!/usr/bin/env bash
read -p "mfa prompt: " my_input
echo $my_input
/usr/bin/ssh "$@"
EOF
その他の一般的な提案としては、同じことを実行するエイリアスまたは関数を作成することが挙げられます。
リンク