Fundo:
eu tenho umlocalscript que precisa ser executadolocalmentecomo pré-requisito para fazer uma conexão ssh.
O script já está funcionando, mas atualmente os usuários precisam executá-lo e, em seguida, fazer uma conexão ssh – duas etapas.Eu gostaria que isso acontecesse em uma única etapa.
Exemplo de execução de script, da perspectiva dos usuários:
$ /scripts/generate-mfa-auth.sh
MFA Code: 12345
Configuring authorized_keys...
Success. You can now connect over ssh.
$ ssh [email protected]
Objetivo/Problema:
Quero que este script permita a entrada do usuário quando acionado pela configuração do ssh.
Por exemplo, esta configuração ssh abaixo executa o script corretamente, masnão permite que o usuário interajae o usuário nunca vê nenhuma saída padrão do script:
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
Pergunta:
Existe alguma maneira de fazer esse script funcionarinterativamentequando chamado da configuração ssh?
Responder1
Não conheço uma maneira de fazer isso com a configuração do ssh, mas uma solução bastante comum é criar um script instalado anteriormente no arquivo PATH
. Por exemplo
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
Outras sugestões comuns envolvem a criação de um alias ou função para fazer a mesma coisa.
links