Como posso salvar permanentemente uma chave SSH protegida por senha?

8

Estou usando o Awesome Window Manager

Como posso adicionar permanentemente chaves privadas com senha?

Inspirado pela resposta aqui eu adicionei as chaves privadas em ~ / .ssh / config

Conteúdo de ~ / .ssh / config:

IdentityFile 'private key full path'

Permissões de ~ / .ssh / config: 0700

Mas isso não funciona para mim.

Se eu adicionar manualmente a chave em cada sessão, ela funciona, mas estou procurando uma maneira mais elegante (não em .bashrc)

EDITAR :

  • Usando a versão clássica (sem efeitos) do Gnome .

Depois de adicionar a chave SSH com ssh-copy-if ao host remoto, recebo o seguinte aviso no terminal (Terminal GNOME 3.0.1) quando estou efetuando login:

ssh -i .ssh/Password-Protected-Key user@host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • Usando o Awesome gerenciador de janelas v3.4.10. Eu já tinha gnome-keyring-dameon , então eu matei o outro pid e execute gnome-keyring-daemon --start | grep SOCK (eu também adicionei no .profile) a saída (grep):

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

Eu segui exatamente os mesmos passos e, da mesma forma, não tenho nenhuma caixa de diálogo ssh-add da GUI.

EDIT 2 :

Eu criei uma nova chave protegida por senha a partir da máquina virtual do Ubuntu 11.10 e ainda não consegui nenhuma solicitação de senha.

EDIT 3 : Parece que isso não pode funcionar no Gerenciador de janelas Awesome :( e possivelmente outro ..

    
por pl1nk 18.05.2012 / 14:08

5 respostas

2

Se você estiver usando o Unity, ou um gerenciador de sessões que inicie o gnome-keyring-daemon, você pode simplesmente usar o Seahorse (Senhas e Chaves) para estabelecer uma chave, definir para que serve, definir uma frase secreta e distribuir sua chave pública. chave para o computador que você vai usar com o ssh. Nenhum comando de terminal é necessário.

Você cria a senha por:

  1. selecionando Arquivo- > Novo e selecione Chave Secure Shell. Pressione Continuar.

  2. Digite um nome descritivo e selecione Create and set up .

  3. Você será solicitado a inserir uma frase-chave duas vezes (a segunda vez para verificar se não foi inserida pela primeira vez.

  4. Digite o computador para o qual a chave pública deve ser usada e o nome de usuário no computador para o qual você usará a chave. A chave pública será copiada para esse outro computador, solicitando sua senha nesse computador, se necessário.

Agora, a guia My Personal Keys exibirá a chave.

Assumindo que o daemon do gnome-keyring foi iniciado corretamente quando você efetuou login no Lightdm e novamente pelo seu gerenciador de sessões, quando você usar a chave pela primeira vez com o ssh, será solicitada a frase-chave. Nessa caixa de diálogo, você pode fornecer a frase-chave, selecionar o controle Details e solicitar que o chaveiro seja desbloqueado sempre que você estiver logado - fornecendo automaticamente essa chave. Pressione OK

Você pode não ser solicitado desta maneira se houver outra chave disponível para efetuar login no computador remoto.

Depois disso, a primeira guia Seahorse Passwords listará uma "Unlock password entry" para o nome da chave. Clique no triângulo antes de " Senhas: Login" para ver.

    
por John S Gruber 13.06.2012 / 02:09
19

Fazer uma chave SSH protegida por senha persistir em sessões e reinicializações

Provavelmente, isso é o que você deseja: inserir a frase secreta de chave uma vez torna-a disponível para sempre, sempre que você estiver conectado. Ela funcionará para a maioria dos usuários que usam os desktops Unity ou Gnome.

  • Quando você se conectar depois de adicionar a chave pública ao servidor remoto, você obterá a caixa de diálogo ssh-add da GUI:

  • Expandaos"Detalhes" clicando no triângulo e você verá o abaixo. O padrão é "chaveiro de bloqueio quando eu efetuar logout", o que requer que você insira a senha uma vez por sessão:

  • Altere-oparaDesbloquearautomaticamente...semprequeeuestiverconectado,oquesignificaqueelefuncionarásemprequevocêestiverconectadoàsuasessão-é"controlado" pela sua senha de usuário. Ele persistirá durante as reinicializações.

  • Insiraafrasesecretachaveumavezepronto-achaveéautenticadapormeiodologininicialbem-sucedidoemseuambientedeáreadetrabalho.

SevocêestiverusandooAwesomeWM

TestadocomumanovainstalaçãodoAwesomeWMemumnovoIDdeusuário

  • Porpadrão,oAwesomeWMusassh-agent:

    $export|grepSSHdeclare-xSSH_AGENT_PID="5479"
    declare -x SSH_AUTH_SOCK="/tmp/ssh-fWCKNnPq5440/agent.5440"
    
  • Para que as etapas acima funcionem, você deve usar gnome-keyring-daemon como o daemon de autenticação SSH, não o ssh-agent. Quando você faz o login usando lightdm, o PAM inicia gnome-keyring-daemon que tentará desbloquear uma chave de login com sua senha de desbloqueio, mas você deve adicionar à sua configuração para mantê-la em execução e usá-la.

  • Adicione o seguinte ao final do seu ~/.xprofile :

      #!/bin/bash
      eval $(gnome-keyring-daemon --start)
      export SSH_AUTH_SOCK
      export GNOME_KEYRING_PID
      export GNOME_KEYRING_CONTROL
    

Os comandos no arquivo ~/.xprofile serão executados pelo xsession antes de iniciar o awesome gerenciador de janelas e amarrá-lo ao processo gnome-keyring-daemon --login iniciado pelo PAM através das variáveis de ambiente acima.

  • Faça o logout no lightdm e faça login novamente, e agora, quando fizer ssh user@host , você deverá obter os popups acima - use-os para decodificar suas chaves privadas em ~ / .ssh / e salve suas chaves privadas no gnome -chave de chaves de início de sessão de chaves.

A solução geral para qualquer gerenciador de janelas / ambiente de área de trabalho

  • é usar gnome-keyring-daemon em vez de ssh-agent . Para isso, você precisa executar gnome-keyring-daemon e inicializá-lo e ou fazer isso depois que ssh-agent for iniciado ou não iniciar ssh-agent .

  • ssh (na verdade ssh-add) decide qual agente de autenticação chamar com base no valor da variável de ambiente SSH_AUTH_SOCK , que pode ser verificado digitando export | grep SOCK

  • este é o formato SSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130 para ssh-agent (NÃO é o que você deseja salvar sua chave)

  • mas na forma SSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh" para gnome-keyring-daemon (que você deseja)

  • , verifique o valor e verifique com ps aux | grep keyring que gnome-keyring-daemon está sendo executado e, se for o caso, inicialize-o com os resultados de gnome-keyring-daemon --start

  • você pode verificar as identidades salvas associadas no console digitando ssh-add -l - se ele mostrar "nenhum agente", você cometeu um erro ao configurar o gnome-keyring-daemon.

por ish 09.06.2012 / 01:22
2

A solução para o seu problema está usando o agente ssh. Você só precisa desbloquear a senha da sua chave uma vez, depois disso ela é retida na memória pelo agente e usada automaticamente

  • Gere um par de chaves privada / pública com ssh-keygen -t dsa
  • Copie a chave pública para a máquina remota, geralmente isso é ~ / .ssh / authorized_keys (use ssh-copy-id para isso)
  • Executar ssh-add antes de efetuar login no sistema remoto, isso solicitará sua frase secreta e a armazenará
  • Login no sistema remoto, sem necessidade de senha

ssh-agent é descrito bem no .net, por exemplo aqui:

Outra vantagem do ssh-agent é que, se você fizer login no sistema remoto com ssh -A [email protected] , poderá usar o ssh do computador domain.name para um terceiro computador que contenha sua chave pública sem copiar cada chave privada para o domínio. nome do computador (e ele nunca vê sua chave privada, apenas o desafio / resposta única).

    
por Floyd 04.06.2012 / 16:21
-1

você pode usar

ssh-add 'filename or fullpath'

você será perguntado pela frase secreta se você tiver uma chave

então você pode se conectar com a senha

    
por eyadof 18.05.2012 / 14:23
-2

Se você deseja trabalhar com chaves privadas, faça o seguinte:

ssh-keygen -t rsa -N ''

Então:

copie .ssh/id_rsa.pub para o destino da máquina em .ssh/authorized_keys via scp

scp .ssh/id_rsa.pub user@remote_machine:~/.ssh/authorized_keys

Tudo pronto.

Conecte-se à máquina remota sem senha:

ssh user@remote_machine

E não temos solicitação de senha.

    
por Octávio Filipe Gonçalves 18.05.2012 / 14:15