Eu sou ssh em um host remoto (linux, fedora) e quero fazer a operação ssh (git com bitbucket) lá. Há ssh-agent em execução nessa máquina,
$ ps -e|grep sh-agent
2203 ? 00:00:00 ssh-agent
mas quando eu quero ir embora, é necessário que eu digite a senha
$ git pull
Enter passphrase for key '/user/wgong/home/.ssh/id_rsa':
Nota: se eu operar nessa máquina localmente, ele não solicitará que eu digite a senha
Respostas:
Na minha opinião, a melhor maneira de usar ssh
Antes de usar o Git, adicione sua chave ao ssh-agent
Inicie o ssh-agent se não for iniciado:
Adicione sua chave privada usando ssh-add
Verifique se a chave foi adicionada (o parâmetro é um L minúsculo):
Tente se conectar ao seu servidor Git:
Agora você pode usar o Git sem avisos adicionais de senha.
Outras maneiras
https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt
fonte
.bashrc
?eval
é necessário porque gera comandos que exportam variáveis de ambiente como SSH_AUTH_SOCK necessárias. unix.stackexchange.com/questions/351725/…Se você já estiver
ssh-agent
executando, poderá adicionar a chave e precisará digitar a senha uma vez e apenas uma vez para essa sessão.Você não diz qual sistema operacional está usando, mas se for Linux e Gnome, o aplicativo "Senhas e Chaves" (nome da CLI:)
seahorse
poderá gerenciar esses itens para que sejam desbloqueados quando você efetuar login (não é necessária uma senha) . Outros ambientes de desktop Linux têm seus próprios gerentes. Não sei o que outros sistemas operacionais fazem aqui.fonte
O principal motivo da solicitação de senha é que sua chave está criptografada; compare estes dois:
não criptografado
criptografado
Então você deve fazer um dos seguintes:
~/.ssh/config
e especifique um arquivo de identidade diferente (IdentityFile
).ssh-add -l
para listar todas as suas identidades (depois compare com o seu local) e verifique com o Stash se você estiver usando as teclas certas (elas existem na configuração do Stash).Se você conhece a senha e deseja automatizá-la, tente a seguinte solução alternativa:
Solução de problemas:
eval "$(ssh-agent -s)"
).GIT_TRACE=1 git pull
ou comGIT_SSH_COMMAND="ssh -vv"
(Git 2.3.0+) para depurar seu comando novamente.Você pode tentar ignorar a solicitação da senha (que a redirecionará para
true
), mas acho que não vai ajudar. Se pedir, há uma razão para isso e é basicamente necessária.fonte
O
ssh-add
programa inicia um agente que pode reter (e fornecer) sua senha. A maneira de usá-lo remotamente é um pai do seu shell interativo (para que o agente não pare).Aqui estão algumas perguntas relacionadas:
Agora ... conectando-se remotamente , como regra, seu comando não efetua login como tal, portanto, não é iniciado
ssh-add
. Você pode contornar isso executando um script quessh-agent
ssh-add
O ponto fraco é o segundo passo: você ainda será solicitado a inserir a senha, a menos que diminua sua segurança usando uma chave que não possui senha . Algumas pessoas fazem isso, a maioria das pessoas desaconselha.
fonte
ssh-add
não inicia o agente. Ele se conecta a um agente já em execução.Você pode remover facilmente a senha da sua chave usando o seguinte comando
No primeiro prompt, digite o caminho do arquivo (ou pressione Enter para alterar o padrão). Segundo prompt, digite a senha antiga.
Parece que esta é a maneira mais fácil!
fonte
Você ainda receberá um prompt de senha para descriptografar a chave privada, mesmo que ela seja carregada
ssh-agent
até que a chave pública SSH correspondente seja adicionada ao controle remoto~/.ssh/authorized_keys
.Reproduzir:
Confuso o suficiente. A senha de login SSH remota seria suficiente nesse caso.
Posso especular que isso evite adicionar sua chave pública (que está emparelhada com a chave privada criptografada) sem saber a senha de criptografia da chave privada correspondente. É um procedimento de login único por controle remoto de qualquer maneira.
fonte