Como evitar ser perguntado a senha toda vez que eu enviar para o Bitbucket

188

Eu configurei meu material ssh com a ajuda de este guia , e costumava funcionar bem (eu poderia executar hg push sem ser solicitada uma frase secreta). O que poderia ter acontecido entre então e agora, considerando que eu ainda estou usando o mesmo diretório home.

$ cat .hg/hgrc 
[paths]
default = ssh://[email protected]/tshepang/bloog

$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa': 
pushing to ssh://[email protected]/tshepang/bloog
searching for changes
...
    
por Tshepang 28.04.2011 / 16:22

6 respostas

288

Você precisa usar um agente ssh. Resposta curta: tente

$ ssh-add

antes de empurrar. Forneça sua senha quando solicitado.

Se você ainda não estiver executando um agente ssh, receberá a seguinte mensagem:

Could not open a connection to your authentication agent.

Nessa situação, você pode iniciar um e configurar seu ambiente assim

eval $(ssh-agent)

Em seguida, repita o comando ssh-add .

Vale a pena dar uma olhada no manpage do agente ssh .

    
por 28.04.2011 / 16:47
37

Uma maneira de resolver isso é com ssh-agent e ssh-add :

$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa: 

Depois disso, a frase secreta é salva para a sessão atual. e não será perguntado novamente.

    
por 03.11.2011 / 10:32
23

Eu uso Chaveiro para gerenciar chaves ssh. Também está disponível no Debian e presumivelmente no Ubuntu com

apt-get install keychain

Aqui está a página do pacote de chaves da Debian . Como você pode ver, o projeto não é muito ativo, mas funciona para mim. Eu também comentei um pouco sobre isso em outra resposta aqui

    
por 28.04.2011 / 22:44
9

Crie (ou edite se existir) o seguinte arquivo ~ / .ssh / config:

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa
    
por 26.03.2018 / 12:40
6

Por conveniência, o método ideal é uma combinação das respostas de jmtd e Faheem .

Usar ssh-agent sozinho significa que uma nova instância de ssh-agent precisa ser criada para cada novo terminal que você abrir. keychain quando inicializado pedirá a frase secreta para a (s) chave (s) privada (s) e a armazenará. Dessa forma, sua chave privada é protegida por senha, mas você não precisará digitar sua senha repetidamente.

O Wiki do Arch recomenda a inicialização das chaves do /etc/profile.d/ ou do seu perfil de shell, como .bash_profile ou .bashrc . Isto tem uma desvantagem na medida em que inicializa o seu chaveiro assim que você abre um terminal.

Uma abordagem mais flexível é combinar keychain com uma sessão tmux específica. Então, em .bash_profile :

tsess=$(tmux ls 2>&1)

if [[ "${tsess%%:*}" = "secured" ]] && 
   [[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
    # start keychain
    /usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
    . $HOME/.keychain/$HOSTNAME-sh
fi

... e, em seguida, é apenas um caso de iniciar a sessão segura de tmux como e quando necessário (iniciado a partir de uma associação de teclas):

#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"

if [[ -z "$SSH_AUTH_SOCK" ]]; then
    eval 'ssh-agent'
    trap "kill $SSH_AGENT_PID" 0
fi

if [[ -z "$PID" ]]; then
    urxvtc -title "SSH" -e sh -c "${new}"
else
    urxvtc -title "SSH" -e sh -c "${old}"
fi

ssh-add

Agora, suas chaves só serão inicializadas uma vez quando você iniciar essa sessão tmux específica. Enquanto essa sessão persistir, você poderá acessar as chaves ssh e enviar para seus repositórios remotos.

    
por 03.11.2011 / 20:55
0

Você pode usar sshpass :

$ sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server

Você só precisa adicionar sshpass -p yourpassphrase antes de anexar seu comando usual ssh .

    
por 18.05.2018 / 12:59