Passa senha para um script rodando sobre o ssh

1

Esta não é uma duplicata da pergunta . Eu logar em um servidor remoto usando ssh com um par de chaves (sem senha necessária). No servidor remoto, há um script meu precisando de uma senha para outra coisa.

Quando eu faço login e executo o script, eu sou solicitado, insiro a senha e está tudo bem:

my-local> ssh my-remote
my-remote> ./my-script
Password for something else: ***
OK
my-remote> exit

Quando tento fazer isso em uma única etapa, recebo um erro como

my-local> ssh my-remote ./my-script
fatal: could not read Password for .... No such device or address

Eu realmente não me importaria de digitar a senha, se eu pudesse.

No entanto, como uma questão secundária, eu gostaria de saber se é possível passar o PW de "my-local" de forma segura (não quero armazená-lo no script em "my-remote ").

Ambos os servidores são Ubuntu 16.04.

    
por maaartinus 06.12.2016 / 02:42

2 respostas

1

A ferramenta está lendo tty e, se você especificar um comando para o ssh , ele não alocará um TTY no servidor remoto e, portanto, falhará. Você pode forçar ssh a alocar seu TTY no servidor remoto usando a opção -t .

ssh -t my-remote ./my-script

deve fazer o trabalho para você.

    
por 06.12.2016 / 12:35
0

Certos programas são lidos diretamente de / dev / tty, não stdin. "passwd" por exemplo. Então é difícil roteirizá-los. A expectativa é uma maneira de contornar isso - isso pode enganar o programa, fornecendo informações para eles:

link

Ele também pode ajudar com a exigência de não ter as senhas armazenadas em um script ou arquivo de configuração em cada servidor - todas elas seriam armazenadas na máquina central, que você guardaria de perto, é claro ...

    
por 06.12.2016 / 03:03