Eu pesquisei e li o FAQ e o Wiki do Magit, mas ainda não consegui descobrir isso, tudo o que encontro são respostas sobre o Windows ...
Como posso configurar o Magit para usar a minha sessão ssh-agent em execução e não pedir minha senha ao fazer um push.
Estou executando o linux e tenho a inicialização do ssh-agent no meu terminal e desbloqueio a minha chave, o que me permite executar git push, etc., sem que eu digite a senha todas as vezes.
Env:
Arch Linux
Emacs 24.4
ssh-agent com chaves adicionadas, para desbloquear no primeiro terminal aberto.
EDIT: Eu quis dizer usando senha, você sabe para a chave ssh, et al.
E estou empurrando para o Bitbucket, mas acredito que o principal problema é que o Magit não está falando / reconhecendo meu agente ssh.
Talvez haja alguma configuração para definir, para dizer que estou executando?
M-x getenv SSH_AGENT_PID
?M-x getenv SSH_AUTH_SOCK
Respostas:
Bem, isso acabou sendo mais uma toca de coelho do que eu pensava ... E, pelo que entendi, não há uma solução melhor para esse problema específico, com essa combinação de desktop, ssh-agent, emacs.
Problema 1 O
XFCE estava iniciando seu próprio ssh-agent com a sessão, sem dizer isso em nenhum lugar, o que fez com que o sistema tivesse 1 ssh-agent global não utilizado e meu agente desbloqueado específico do shell.
Em um DE diferente, você pode executar o mesmo problema e precisará encontrar os detalhes específicos para desativar o início automático do agente.
Solução 1
Execute este comando para desativar a execução do ssh-agent de inicialização
xfconf-query -c xfce4-session -p /startup/ssh-agent/enabled -n -t bool -s false
Problema 2
faz agora Emacs não tem nenhum SSH_AGENT_PID e SSH_AUTH_SOCK variáveis definido, então nada no ambiente carregado. Obviamente, o Magit ainda pede a chave, pois não sabe sobre o novo agente ssh que começamos.
Solução 2
Precisamos que o Emacs busque essas novas variáveis do ambiente, mas é claro, não há um caminho direto.
Digite: exec-path-from-shell que permite buscar variáveis de ambiente do seu shell. Então.
(require 'exec-path-from-shell) (exec-path-from-shell-copy-env "SSH_AGENT_PID") (exec-path-from-shell-copy-env "SSH_AUTH_SOCK")
Obrigado pessoal pela sugestão de olhar para as variáveis SSH _ **, que me indicaram a direção certa.
fonte
Outra solução para o preguiçoso é usar apenas um pacote que lida exatamente com esse caso (configurando as variáveis de ambiente relacionadas às chaves do Emacs):
M-x keychain-refresh-environment
e agora deve funcionar.(keychain-refresh-environment)
em seu init.el, para que a solução funcione após reiniciar o EmacsE isso é tudo, supondo que o seu ssh-agent esteja configurado e em execução.
Descrição muito boa, a partir do comentário do pacote:
fonte
keychain
.Agora, o FWIW
keychain
possui uma--systemd
opção que injeta as variáveis no ambiente do usuário do systemd.A solução mais simples que encontrei foi adicionar
eval "$(keychain --eval --quiet --noask --systemd keys...)"
a um script executado na unidade systemd para iniciar o servidor Emacs.fonte