背景:
我有一個當地的需要執行的腳本本地作為建立 ssh 連線的先決條件。
該腳本已經可以運行,但當前用戶需要運行該腳本,然後建立 ssh 連線 - 兩個步驟。我希望這一步就能實現。
從使用者角度來看,範例腳本運行:
$ /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 配置呼叫時?
答案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
其他常見的建議包括建立別名或函數來執行相同的操作。
連結