背景:
我有一个当地的需要执行的脚本本地作为建立 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
其他常见的建议包括创建别名或函数来执行相同的操作。
链接