背景:

背景:

背景:

我有一个当地的需要执行的脚本本地作为建立 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

其他常见的建议包括创建别名或函数来执行相同的操作。

链接

相关内容