Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

1. Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Tiago Henrique
tiagohqsilva

(usa Arch Linux)

Enviado em 02/08/2022 - 23:05h

Oi, pessoal!
A pergunta pode ser um pouco estranha, mas é que não encontrei uma maneira melhor de perguntar...
É o seguinte: eu estou criando um script que automatize a criação de um projeto NodeJs. Um dos passos do script é fazer o clone de alguns arquivos de configuração específicos que estão em um repositório no gitHub. No momento de clonar esses arquivos, o git, naturalmente, me pede a senha ssh. Eu, realmente não tenho problemas em ter que digitar a senha nesse passo. No entanto, acharia mais prático que o script cuidasse disso para mim. Alguém, por favor, poderia me dar uma orientação? Isso é possível? Como eu faria?
Tenho me dedicado a aprender bash script, mas ainda to bem no básico...

Desde já grato!!
Tiago.


  


2. Re: Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/08/2022 - 23:24h


tiagohqsilva escreveu:

Oi, pessoal!
A pergunta pode ser um pouco estranha, mas é que não encontrei uma maneira melhor de perguntar...
É o seguinte: eu estou criando um script que automatize a criação de um projeto NodeJs. Um dos passos do script é fazer o clone de alguns arquivos de configuração específicos que estão em um repositório no gitHub. No momento de clonar esses arquivos, o git, naturalmente, me pede a senha ssh. Eu, realmente não tenho problemas em ter que digitar a senha nesse passo. No entanto, acharia mais prático que o script cuidasse disso para mim. Alguém, por favor, poderia me dar uma orientação? Isso é possível? Como eu faria?
Tenho me dedicado a aprender bash script, mas ainda to bem no básico...

Desde já grato!!
Tiago.

Tiago, boa noite.
Poste o script...


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



3. Re: Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Carlos APC
Carlos_Cunha

(usa Linux Mint)

Enviado em 03/08/2022 - 08:33h


Eu gosto mais de usar chaves para login sem senha, mas caso queira usar senha pode usar o SSHPASS


#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#



4. Re: Como criar um script que informa uma senha ssh automáticamente... ?

Perfil removido
removido

(usa Nenhuma)

Enviado em 03/08/2022 - 09:11h

O GitHub não aceita mais senhas... Está usando o GitLab?

De qualquer forma, o negócio é o seguinte, eu acho, que você deve configurar o seu arquivo `~/.ssh/config` e clonar o repo via SSH....



5. Re: Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Glaulher Ramalho Medeiros
GRM

(usa openSUSE)

Enviado em 03/08/2022 - 16:14h


Se usar o vscode ele faz isso pra você(ele salva a senha ssh do git).
quando lido com o git só uso o terminal do vscode por conta da preguiça que tenho de ficar entrado com essa chave ssh rsrsr

Disciplina é liberdade
Compaixão é fortaleza
Ter bondade é ter coragem


6. Re: Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Tiago Henrique
tiagohqsilva

(usa Arch Linux)

Enviado em 03/08/2022 - 20:18h


msoliver escreveu:


tiagohqsilva escreveu:

Oi, pessoal!
A pergunta pode ser um pouco estranha, mas é que não encontrei uma maneira melhor de perguntar...
É o seguinte: eu estou criando um script que automatize a criação de um projeto NodeJs. Um dos passos do script é fazer o clone de alguns arquivos de configuração específicos que estão em um repositório no gitHub. No momento de clonar esses arquivos, o git, naturalmente, me pede a senha ssh. Eu, realmente não tenho problemas em ter que digitar a senha nesse passo. No entanto, acharia mais prático que o script cuidasse disso para mim. Alguém, por favor, poderia me dar uma orientação? Isso é possível? Como eu faria?
Tenho me dedicado a aprender bash script, mas ainda to bem no básico...

Desde já grato!!
Tiago.

Tiago, boa noite.
Poste o script...


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


Opa, Marcelo! Eu ainda não estou com ele pronto, mas, basicamente é uma sequencia de comandos simples... entra numa pasta, roda uns comandos específicos do Nodejs, cria uns arquivos... Quando eu terminar eu fecho o tópico com o script pronto para tu dar uma olhada!



7. Re: Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Tiago Henrique
tiagohqsilva

(usa Arch Linux)

Enviado em 03/08/2022 - 20:19h


Carlos_Cunha escreveu:


Eu gosto mais de usar chaves para login sem senha, mas caso queira usar senha pode usar o SSHPASS


#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#

Cara, massa! eu vou tentar isso agora! Brigadão!



8. Re: Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Tiago Henrique
tiagohqsilva

(usa Arch Linux)

Enviado em 03/08/2022 - 20:21h


stormer escreveu:

O GitHub não aceita mais senhas... Está usando o GitLab?

De qualquer forma, o negócio é o seguinte, eu acho, que você deve configurar o seu arquivo `~/.ssh/config` e clonar o repo via SSH....

Pois é, mano! Uso o guitHub, acontece que eu tenho uma senha para o SSH... Vou tentar a toque do amigo acima... se não rolar eu faço outra sem a senha.



9. Re: Como criar um script que informa uma senha ssh automáticamente... ? [RESOLVIDO]

Tiago Henrique
tiagohqsilva

(usa Arch Linux)

Enviado em 03/08/2022 - 20:22h


GRM escreveu:


Se usar o vscode ele faz isso pra você(ele salva a senha ssh do git).
quando lido com o git só uso o terminal do vscode por conta da preguiça que tenho de ficar entrado com essa chave ssh rsrsr

Disciplina é liberdade
Compaixão é fortaleza
Ter bondade é ter coragem


Pode crêr, eu uso neovim... mas, mesmo assim não sei se esse recurso do vscode me ajudaria com o que to tentando fazer....



10. Como criar um script que informa uma senha ssh automáticamente... ?

Tiago Henrique
tiagohqsilva

(usa Arch Linux)

Enviado em 04/08/2022 - 01:35h

Pessoal, resolvido.

A solução foi meio difícil de achar, depois foi meio díficíl de enterder, mas é basicamente o seguinte:

Eu encontrei uma ferramenta chamada `expect`, esse utilitário tem a finalidade de automatizar aplicativos interativos como telnet, ftp, passwd, fsck, rlogin, tip, etc. O Expect é um programa que "conversa" com outros programas interativos de acordo com um script. Seguindo o script, o Expect sabe o que pode ser esperado de um programa e qual deve ser a resposta correta. No meu caso, o meu script espera o momento em que o git pede meu passphrase para chave ssh `Enter passphrase for key '/home/${USER}/.ssh/id_ed25519':`. Quando isso ocorre o utilitário passa o segredo e tudo funciona.

Para o Expect fazer isso corretamente, os passos que ele deve seguir são definidos em um heredoc que envia uma string para entrada padão em um bloco de substituição de processo:


expect <(cat <<EOD
spawn git clone git@github.com:user/repo.git
expect "Enter passphrase for key '/home/${USER}/.ssh/id_ed25519': "
send "${PASS}\r"
expect eof
EOD
)


Um detalhe inportante é que citar (colocar entre áspas simples) <<'EOD', significa que tudo no seu heredoc será tratado literalmente. Então, para expandir as variáveis como eu fiz acima deixe sem áspas.

Eu ainda não sei muito bem como as coisas funcionam como funcionam no Bash, então, se alguém puder complementar ou me corrigir, por favor, fique a vontade! É com coisas assim que a gente vai aprendendo.

--- Os links das pesquisas:
- expect -> https://linux.die.net/man/1/expect
- substituição de processos -> https://wiki.bash-hackers.org/syntax/expansion/proc_subst
- heredocs -> https://en.wikipedia.org/wiki/Here_document#Unix_shells

--- Discussões no stackOverFlow que me guiaram até a solução:
- https://stackoverflow.com/questions/34155308/provide-passphrase-to-git-in-bash-script
- https://stackoverflow.com/questions/31901912/how-to-make-expect-nested-in-the-bash-script-properly
- https://stackoverflow.com/questions/4937792/using-variables-inside-a-bash-heredoc
- https://stackoverflow.com/questions/2500436/how-does-cat-eof-work-in-bash







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts