ssh-add é esquecido se o novo terminal gnome for aberto

3

Depois de um:

eval 'ssh-agent -s'
ssh-add

Eu posso entrar em um "servidor" via ssh sem pwd.

Pergunta: Mas se eu abrir um novo terminal gnome eu tenho que fazer isso de novo, por quê?

Usando o RHEL Desktop 6.6 com o GNOME.

UPDATE # 1 : interessante, outro RHEL Desktop não roda o ssh-agent, ele só precisa de um "ssh-add" por inicialização. Mas a emissão de um "ssh-add" na "área de trabalho inválida" apenas fornece uma mensagem de erro: "Não foi possível abrir uma conexão com seu agente de autenticação".

UPDATE # 2 : SSH_AUTH_SOCK está faltando após uma nova reinicialização, talvez seja esse o problema ?:

[user@notebook ~]$ env | grep SSH
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
[user@notebook ~]$ 
    
por danijelgwrtheyrn 30.04.2015 / 09:09

3 respostas

0

Se "env | grep SSH" estiver incorreto (com relação à falta de SSH_AUTH_SOCK):

vi ~ / .bashrc

SSH_AUTH_SOCK='env | grep GNOME_KEYRING_SOCKET | cut -d= -f2 | sed 's/$/.ssh/g''
[ -z "$SSH_AUTH_SOCK" ] || export SSH_AUTH_SOCK
    
por 30.04.2015 / 14:18
4

ssh-add e ssh referem-se a algumas variáveis de ambiente para encontrar o agente SSH com o qual conversar: SSH_AGENT_PID e SSH_AUTH_SOCK . Quando você corre

eval 'ssh-agent -s'

ssh-agent gera os valores e seu shell os interpreta; eles são definidos no shell do qual o comando é executado, e somente esse shell . Assim, quando você inicia um novo terminal, o novo shell nesse terminal não tem essas variáveis configuradas adequadamente e ssh não consegue encontrar o agente.

Se você tiver os dois terminais em execução, você pode executar

env | grep SSH

no terminal do qual você iniciou o agente e defina os valores fornecidos no novo terminal. Então, ssh deve encontrar o agente no segundo terminal.

Uma solução melhor é usar a integração do agente SSH no GNOME, conforme fornecido por gnome-keyring . Não tenho certeza de como as coisas estão configuradas no RHEL Desktop, mas você pode tentar simplesmente executar ssh-add sem iniciar o agente antes ...

A documentação do keyring do GNOME SSH pode ser útil; em particular, você pode querer verificar se o SSH Key Agent está habilitado em seus aplicativos de inicialização (nas propriedades do GNOME).

    
por 30.04.2015 / 09:28
1

ssh-agent -s retorna algumas variáveis de ambiente a serem configuradas, assim:

SSH_AUTH_SOCK=/tmp/ssh-OIohiYiJShSO/agent.11139; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11140; export SSH_AGENT_PID;

Enquanto eles são transferidos para processos iniciados a partir do shell, eles não são aplicados a processos não iniciados a partir desse shell. Quando você abre um novo terminal gnome a partir da área de trabalho ou de um menu, ele não é iniciado por meio desse shell, portanto, não obtém as variáveis de ambiente.

Se você iniciar seu novo terminal a partir do shell, você executou exec 'ssh-agent -s' , por exemplo, digitando gnome-terminal & , ele herdará as variáveis do shell e deverá funcionar. Alternativamente, você pode chamar ssh-agent com um comando, assim:

ssh-agent gnome-terminal &

Em seguida, ele executará esse comando com as variáveis de ambiente necessárias definidas.

    
por 30.04.2015 / 09:28

Tags