Tenho uma chave privada configurada para minha conta do github, cuja senha é, acredito, armazenada no chaveiro do OS X. Certamente não preciso digitá-lo quando abro uma janela do terminal e entro ssh [email protected]
.
No entanto, quando estou executando o bash em uma sessão ssh, ou localmente dentro de uma sessão tmux, tenho que digitar a senha sempre que tento ssh no github.
Esta pergunta sugere que existe um problema semelhante com a tela, mas eu realmente não entendo o problema o suficiente para corrigi-lo no tmux. Há também esta página que inclui uma solução bastante complicada, mas para o zsh.
EDIT :
Em resposta à resposta de @ Mikel , de um terminal local, recebo a seguinte saída:
[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~]
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"
Enquanto over ssh ou tmux eu recebo:
[~]
$ echo $SSH_AUTH_SOCK
[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found
echo $SSH_AGENT_PID
não retorna nada, seja qual for o shell em que eu o execute.
typeset -p SSH_AUTH_SOCK
?bash: typeset: SSH_AUTH_SOCK: not found
partir do ssh / tmux. Vou tentar localmente hoje à noite, se necessário.Respostas:
Meu colega criou algumas funções do bash para ajudar a encontrar um agente ativo : https://github.com/wwalker/ssh-find-agent
Ele o usa principalmente para conectar-se entre sistemas (laptop a desktop, etc), mas eu o uso com mais frequência em sessões locais do tmux, nas quais você efetua logout / logon no gerenciador de janelas (OS X para mim).
Uso
Faça o download do ssh-find-agent.bash (
git clone git://github.com/wwalker/ssh-find-agent.git
funciona).Adicione o seguinte ao ~ / .bashrc:
Em seguida, você pode digitar o seguinte para definir SSH_AUTH_SOCK no seu shell atual:
fonte
Uma solução elegante, adquirida em dagit.o :
Crio
~/.ssh/rc
adicionar à
~/.tmux.conf
fonte
No seu
.tmux.conf
arquivo de configuração, adicione esta linha:Isso faz com que essas variáveis de ambiente sejam copiadas do shell principal para quaisquer shells abertos no tmux, o que permite que o ssh-agent funcione corretamente dentro desses shells do tmux.
fonte
update-environment
. O OP deve verificar seuupdate-environment
valor e, possivelmente, atualizar onde quer que esteja sendo alterado.update-environment
está definido corretamente. No entanto, o problema ainda ocorre.tmux
servidor estiver presente, desafiando o objetivo de reconectá-lo ... Talvez haja uma opção de linha de comando para atualizar novamente essas variáveis?Aconteceu-me que os painéis criados ao conectar via ssh no OS X começaram a pedir minha senha depois de um tempo trabalhando ok. Encontrei uma maneira de corrigir isso roubando essa linha de http://santini.di.unimi.it/extras/ph/my-tmux-setup.html
Basta executá-lo no painel que está reclamando.
fonte
Não tenho certeza se você está usando o bash ou outro shell, mas a instalação do tmux desse cara parece que funcionaria para o bash. Pessoalmente, estou usando o zsh com oh-my-zsh e descobri que o ssh-agent começou a trabalhar no tmux depois de adicionar
no meu arquivo .zshrc e recarregou a configuração nas minhas sessões zsh em execução. Também achei a solução orientada a zsh desse cara , mas acabou sendo desnecessária para mim.
fonte
O que:
impressão?
Execute-o no seu terminal normal e execute-o dentro da sua
tmux
sessão. Eles devem imprimir a mesma coisa.fonte
ssh
é fácil. Ative o encaminhamento do agente. A maneira mais fácil de fazer isso é executar emssh -A
vez dessh
. Use um alias para não precisar digitá-lo toda vez ou colocá-lo no seu.SSH/config
.Existem muitas soluções, mas a mais simples é encontrada na resposta de Hans Ginzel, de 8 de janeiro de 2016, a uma pergunta relacionada ao StackOverflow de 27 de janeiro de 2014 . Basta adicionar o seguinte ao seu shell
~/.profile
ou similar:Não há necessidade de definir funções de várias linhas ou criar novos arquivos temporários. Se você não quiser usar o alias
ssh
, basta alterá-lo parafixssh
e remover&& ssh
no final e executarfixssh
sempre que estiver tentando executar assh
partir de uma sessão tmux reassociada.A resposta de Hans Ginzel sugere que é necessária uma 'versão mais recente' do tmux para executar
show-env -s
. Isso funciona para mim no tmux 2.7 e, na minha leitura do changelog ,-s
foi adicionado em 3 de junho de 2008 pouco antes do lançamento do tmux 0.3. O tmux 2.3 (29 de setembro de 2016) está no Debian estável.fonte