Estou usando o Awesome Window Manager
Como posso adicionar permanentemente chaves privadas com senha?
Inspirado pela resposta aqui , 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 todas as sessões, ela funcionará, mas estou procurando uma maneira mais elegante (não em .bashrc)
EDIT :
- Usando a versão clássica do Gnome (sem efeitos).
Depois de adicionar a chave SSH ssh-copy-if
ao host remoto, recebo o seguinte prompt no terminal (GNOME Terminal 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 gerenciador de janelas Awesome v3.4.10. Eu já tinha,
gnome-keyring-dameon
então matei o outro pid e executeignome-keyring-daemon --start | grep SOCK
(também o adicionei no .profile) a saída (grep):
SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh
Eu segui exatamente as mesmas etapas e da mesma forma não tenho nenhuma caixa de diálogo GUI ssh-add.
EDIT 2 :
Criei uma nova chave protegida por senha na máquina virtual Ubuntu 11.10 na unidade e ainda não consigo obter nenhum prompt de senha.
EDIT 3 : Parece que isso não funciona no gerenciador de janelas Awesome :( e possivelmente em outro ..
fonte
Respostas:
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 senha e distribuir sua chave pública para o diretório computador que você vai usar com o ssh. Nenhum comando do terminal é necessário.
Você cria a senha:
selecionando Arquivo-> Novo e selecione Chave do Shell Seguro. Pressione Continuar.
Digite um nome descritivo e selecione
Create and set up
.Você será solicitado a digitar uma frase-chave duas vezes (na segunda vez para verificar se não a inseriu incorretamente na primeira vez.
Digite o computador no 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
My Personal Keys
guia exibirá a chave.Assumindo que o gnome-keyring-daemon foi iniciado corretamente quando você efetuou login no Lightdm, e novamente pelo seu gerenciador de sessões, quando você usa a chave pela primeira vez com o ssh, será solicitada a frase-chave. Nesta caixa de diálogo, você pode fornecer a frase-chave, selecionar o
Details
controle e solicitar que o chaveiro seja desbloqueado sempre que você estiver conectado - fornecendo automaticamente essa chave. pressioneOKVocê pode não ser solicitado dessa maneira se houver outra chave disponível para fazer login no computador remoto.
Depois disso, a primeira guia Seahorse
Passwords
listará uma "Desbloquear entrada de senha" para o nome da chave. Clique no triângulo antes de " Senhas: Login" para vê-lo.fonte
Fazendo uma chave SSH protegida por senha persistir entre sessões e reinicializa
Provavelmente, é isso que você deseja: digitar a senha da chave uma vez a torna disponível sempre que você estiver conectado. Funcionará para a maioria dos usuários que estão usando os desktops Unity ou Gnome.
Quando você se conecta após adicionar a chave pública ao servidor remoto, você obtém a caixa de diálogo ssh-add da GUI:
Expanda os "Detalhes" clicando no triângulo e você verá o abaixo. O padrão é "bloquear chaveiro quando eu sair", o que requer que você digite a senha uma vez por sessão:
Altere para Desbloquear automaticamente ... sempre que eu estiver conectado , o que significa que funcionará sempre que você fizer login na sua sessão - é "controlado" pela sua senha de usuário. Ele persistirá durante as reinicializações.
Digite a senha da chave uma vez e é isso - a chave é autenticada através do login inicial bem-sucedido no seu ambiente de área de trabalho.
Se você estiver usando o AwesomeWM
Testado com uma nova instalação do AwesomeWM em um novo ID do usuário
Por padrão, o AwesomeWM usa
ssh-agent
: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 login usando o lightdm, o PAM é iniciadognome-keyring-daemon
para 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
:Os comandos no
~/.xprofile
arquivo serão executados pelo xsession antes de iniciar o incrível gerenciador de janelas e o vincularão aognome-keyring-daemon --login
processo iniciado pelo PAM através das variáveis de ambiente acima.ssh user@host
, você deverá obter os pop-ups acima - use-os para decodificar suas chaves privadas em ~ / .ssh / e salve-as no chaveiro de login do gnome-keyring.A solução geral para qualquer ambiente de gerenciador de janelas / desktop
é usar em
gnome-keyring-daemon
vez dessh-agent
. Para isso, você precisa estar executandognome-keyring-daemon
e tê-lo iniciado e quer fazer isso depoisssh-agent
é iniciado ou não iniciarssh-agent
em tudo.ssh
(na verdade, ssh-add) decide qual agente de autenticação chamar com base no valor daSSH_AUTH_SOCK
variável de ambiente, que pode ser verificada digitandoexport | 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 do formulário
SSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh"
para o gnome-keyring-daemon (que você deseja)verifique o valor e verifique se
ps aux | grep keyring
o gnome-keyring-daemon está em execução e, se estiver, inicialize-o com os resultados degnome-keyring-daemon --start
você pode verificar as identidades salvas associadas no console digitando
ssh-add -l
- se ele mostrar "sem agente", você cometeu um erro ao configurar o gnome-keyring-daemon.fonte
~/.ssh
, não há necessidade de usarssh-add
- a caixa de diálogo será exibida no primeiro uso. Observe que isso só funciona no Unity / Gnome - eu descobri no chat que o OP está usando o AwesomeWM , onde isso não funciona!A solução para o seu problema está usando o agente ssh. Você só precisa desbloquear a senha da sua chave uma vez, depois ela é mantida na memória pelo agente e usada automaticamente
ssh-keygen -t dsa
ssh-copy-id
para isso)ssh-add
antes de efetuar login no sistema remoto; isso solicitará sua senha e a armazenaráO ssh-agent é bem descrito no .net, por exemplo aqui:
Outra vantagem do ssh-agent é que, se você se conectar ao sistema remoto,
ssh -A [email protected]
poderá ssh do computador domain.name para um terceiro computador que contenha sua chave pública, sem copiar sua chave privada para o computador domain.name (e nunca vê sua chave privada, apenas o desafio / resposta única).fonte
você pode usar
ssh-add 'filename or fullpath'
você será solicitado a senha, se você tiver uma
então você pode se conectar sem senha
fonte
Se você deseja trabalhar com chaves privadas, faça:
Então:
copiar
.ssh/id_rsa.pub
para o destino da máquina.ssh/authorized_keys
via scpTudo feito.
Conecte-se à máquina remota sem senha:
E não temos solicitação de senha.
fonte