A caixa de diálogo Senha aparece quando as permissões de chave privada SSH são definidas como 0600

71

Instalei minha chave privada SSH ~/.ssh/id_rsae defina suas permissões como 0600. Quando eu me conecto a um servidor SSH que usa minha chave privada no Terminal.app via ssh, uma caixa de diálogo é exibida e solicita que eu digite minha senha para acessar o id_rsaarquivo:

insira a descrição da imagem aqui

Eu vejo a mesma caixa de diálogo quando me conecto a um servidor FTP com o cliente GUI do Interarchy.

Atualização: eu vejo esse diálogo toda vez que me conecto, independentemente de verificar "Lembrar senha no meu chaveiro". Aparece mais duas vezes se o botão OK for clicado, independentemente do que foi digitado no campo de senha.

Quando relaxo essas permissões para, digamos, 0640não vejo mais uma caixa de diálogo solicitando minha senha, mas sshaborta com o seguinte erro:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
@ AVISO: ARQUIVO CHAVE PRIVADO NÃO PROTEGIDO! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
As permissões 0640 para '/Users/myusername/.ssh/id_rsa' estão muito abertas.
É recomendável que seus arquivos de chave privada NÃO sejam acessíveis por terceiros.
Essa chave privada será ignorada.
permissões incorretas: ignore a chave: /Users/myusername/.ssh/id_rsa

Acho a caixa de diálogo de senha extremamente irritante e tenho certeza de que deve haver uma maneira de evitar a necessidade de descartar essa caixa de diálogo que o SSH precisa acessar o id_rsaarquivo.

Nota: Estou executando o Mac OS X 10.6.8.

titaniumdecoy
fonte

Respostas:

70

Verifique se você possui um correspondente id_rsa.pubou id_dsa.pubem seu ~/.sshdiretório.

Quando eu tinha um, id_rsamas não um correspondente id_rsa.pub, o Mac OS X continuava aparecendo na caixa de diálogo e lembre-se de que a senha no meu chaveiro não fazia nada.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

gerou o arquivo de chave pública apropriado para mim.

Se você já possui seu arquivo público (renomeie para outro nome) e gere a chave pública novamente usando o comando acima, você perceberá que o gerado e o antigo não são iguais. De alguma forma, as versões mais antigas do Mac OS X geravam uma chave pública da qual o Lion não gosta mais, e a geração novamente corrige isso.

Para os curiosos, a chave é exatamente a mesma, a parte que muda é que não há mais seção de "comentários" após a chave no arquivo.

Constantine Sapuntzakis
fonte
2
Esta solução pode não fazer muito sentido à primeira vista, mas tente. Eu estava tendo exatamente o mesmo problema e foi corrigido. Eu sempre uso uma senha nas minhas chaves ssh e você também deve.
Alex Recarey
3
Esta solução funcionou para mim. Não faz sentido, mas funciona! (OS X Lion)
bruno077 29/03
2
Uau, isso não faz nenhum sentido, mas com certeza corrigiu muitos comportamentos estranhos no meu sistema. Obrigado.
Warren Pena
2
Durante toda a minha vida, não consigo encontrar uma solução há dias com o mesmo problema e isso a corrigiu. Isso não faz sentido, mas resolveu o meu problema! Obrigado, votado.
Danny Englander
OMG obrigado! Trabalhou para mim (leão da montanha e usando o SourceTree) esses diálogos eram tão irritantes.
Sebastian Sastre
91

Primeiro, execute ssh-add -Ke verifique se isso resolve o seu problema.

Se não:

  • Removido o arquivo rsa_id.pub e regenerado um novo (deve estar em ~ / .ssh /):

    ssh-keygen -y -f id_rsa > id_rsa.pub
  • Permissões garantidas foram definidas como 600 para id_rsa e id_rsa.pub (devem estar em ~ / .ssh /):

    chmod 600 id_rsa*
  • Execute o seguinte comando:

    ssh-add -K

Depois de fazer isso, não fui mais solicitado a fornecer minha senha de chave privada. Parece realmente colocar a senha da chave privada no local correto das chaves para o OS X usar.

Reed
fonte
7
Estava ficando louco até eu encontrar o comando "ssh-add -K". Não acredito em quão complicado o OSX tornou as coisas. 1000
eduncan911
4
fwiw, eu precisava chmod 600(em vez de 644) para que ele funcione
kangax
11
Chave privada com 644 não é bom
xtian
15
ssh-add -Kresolvido o meu problema
Spechal
2
Não é possível votar até que o chmod 644 seja corrigido para o chmod 600, isso não é seguro.
Tomáš Kafka
20

No meu caso ssh-add -Knão deu certo, tive que especificar a chave:

ssh-add ~/.ssh/id_rsa
nathancahill
fonte
não há -Kmais opção. Sua solução a corrigiu. Eu me pergunto por que eu precisava fazer isso. Nunca tive nenhuma solicitação de senha.
Re
Obrigado! Foi quando o OS X Sierra finalmente pediu minha senha do id_rsa.
Tomáš Kafka
2
FWIW, a -Kbandeira funcionou para mim no Sierra 10.12.2 #
Chris Wagner
Sim. Eu posso confirmar. -K existe e corrige o problema na mais nova Sierra! Bom trabalho @nathancahill.
precisa saber é o seguinte
17

Para o macOS 10.12, o Sierra ssh-add -Kprecisa ser executado após cada reinicialização. Para evitar isso, crie ~/.ssh/configcom este conteúdo.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

A Apple adicionou a nota técnica 2449, que explica o que aconteceu.

Antes do macOS Sierra, o ssh apresentava uma caixa de diálogo solicitando sua senha e oferecia a opção de armazená-la no chaveiro. Esta interface do usuário foi descontinuada há algum tempo e foi removida.

Editar: Aparentemente, não é necessário especificar um host e uma chave. Basta adicionar isso é suficiente.

AddKeysToAgent yes
UseKeychain yes
orkoden
fonte
Isto é o que funcionou para mim. No começo, tentei o ssh-add -K, mas a alteração só funcionaria até a reinicialização.
precisa saber é o seguinte
Eu precisava colocar AddKeysToAgentno nível superior de ~/.ssh/config.
Radon Rosborough 19/09/17
12

Você precisa digitar a senha da chave privada em algum lugar e o OS X usa o ssh-agent por padrão.

Se você deseja usar o ssh-agent, mas deseja evitar a caixa de diálogo GUI, pode usar o ssh-add para adicionar a senha ao agente e, em seguida, ao ssh como de costume.

Se você não quiser usar o ssh-agent e, em vez disso, tiver o prompt ssh para a senha, desative a variável de ambiente SSH_AUTH_SOCK.

zzz
fonte
Obrigado, Alrescha. Você sabe se existe alguma maneira de armazenar sua senha de chave privada no chaveiro do Mac OS X permanentemente (não apenas para uma única sessão)?
titaniumdecoy
3
Você pode tentar 'ssh-add -K' no Terminal, mas se houver um erro no qual marcar a caixa não funcionar, isso também poderá não funcionar. Não quero que minhas senhas ssh sejam armazenadas no chaveiro, por isso não testei isso.
zzz
Com ssh-add -Keu não tenho que digitar minha senha para conectar, mas o prompt ainda aparece; Eu apenas descarto.
titaniumdecoy
3
ssh-add -K é o que você usa para adicionar sua senha ao chaveiro. Se você não digitar sua senha, ela não poderá ser colocada no chaveiro.
zzz
11
adendo: No Lion e no Snow Leopard, se eu digitar ssh-add -K, recebo um prompt no Terminal - não uma caixa de diálogo.
zzz
8

Quando você relaxa as permissões, a chave é ignorada. Você não ganhará nada fazendo isso.

Se você deseja usar uma chave sem precisar digitar uma senha todas as vezes, há duas opções.

Se você marcar a opção "Lembrar senha no meu chaveiro", não precisará digitar a senha todas as vezes: ela será armazenada no chaveiro com todas as suas outras senhas. Esta é a opção recomendada.

Você pode criar um arquivo de chave privada sem uma senha. Você pode alterar seu arquivo de chave privada existente para que não seja protegido por senha (alterar a senha afeta apenas o arquivo de chave, não a própria chave). Na linha de comando, execute ssh -p, digite a senha existente e deixe a nova senha em branco. Existe um risco de segurança em ter uma senha vazia: qualquer pessoa que possa acessar seu arquivo de chave privada (por exemplo, acessando seus backups) pode usá-lo instantaneamente.

Gilles 'SO- parar de ser mau'
fonte
Obrigado pela resposta, apesar de uma coisa que eu esqueci de mencionar - marcar a opção "Lembrar senha no meu chaveiro" não tem efeito: a caixa de diálogo reaparece na próxima vez que eu conectar. (Usando uma senha vazia não é uma opção para mim.)
titaniumdecoy
3
Sugerindo para substituir uma chave protegida por senha com uma chave sem senha é realmente uma ideia horrível ...
Schmurfy
5

se você adicionou sua chave privada ao diretório de origem ~ / .ssh e inseriu ssh-add -K para adicioná-la ao chaveiro e o conteúdo da chave pública foi copiado para .ssh / allowed_keys (para a correta conta) no servidor de destino, a caixa de diálogo desaparece.

é uma combinação complicada de arquivos, permissões, locais e comandos, para que possa levar tempo. eu não me apressaria em chegar a uma conclusão sobre bugs.

David Griffis
fonte
3

Eu tenho exatamente o mesmo problema no Lion (Mac OS X 10.7). Eu acho que é um bug ... Se a autenticação ssh é senha, o cliente passa pela chave pública primeiro, o que é normal. No entanto, mesmo que você opte por salvar a senha no chaveiro (o que não é necessário para a autenticação de senha) na próxima vez em que uma nova conexão ssh for estabelecida, você será solicitado novamente a senha.

Stefan
fonte
11
Eu também considero isso um bug, tudo estava funcionando bem com o snow leopard, mas toda vez que meu computador volta do modo de espera, a senha da chave ssh é solicitada novamente, embora eu tenha marcado "relembrar" da última vez que ele pediu! Muito chato ...
Schmurfy
3

Não deve haver necessidade de gerar novamente suas chaves públicas. Você pode simplesmente executar estes dois comandos:

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

Basicamente, você precisa aumentar as permissões no arquivo de chave pública e adicionar sua chave ao agente de autenticação OSX.

rublo
fonte
3

Na versão mais recente do macOS (10.12.2 - Sierra), essa é uma solução fácil. Apenas edite seu ~ / .ssh / config e ative a opção UseKeychain:

Host *
UseKeychain yes

Salve e resolvido.

Ricardo Mendes
fonte
2

Este problema ocorreu no meu sistema OS X 10.7.4 quando o ssh-agent morreu. Uma reinicialização corrigiu o problema. (Você pode tentar reiniciar o ssh-agent, mas não sei se o Keychain é inteligente o suficiente para pegar o novo soquete do ssh-agent.)

Troy J. Farrell
fonte
Foi isso que meu problema também resolveu depois de ficar perambulando por uma hora.
Re
2
  1. Certifique-se de que ~ / .ssh / seja chmod 700.

  2. Certifique-se de que os arquivos ~ / .ssh / id * sejam ambos chmod 600.

  3. Execute / Applications / Utilities / Keychain Access.app e repare o chaveiro.

  4. Sair. (Reiniciar não seria uma péssima ideia)

  5. Conecte-se

  6. Se o problema persistir, mova os arquivos ~ / .ssh / id * existentes para a área de trabalho e tente gerar novas chaves usando ssh-keygen -t dsa -f ~/.ssh/id_dsa -C [email protected]e veja se as novas chaves funcionam melhor.

Estou no Lion, mas o IIRC Snow Leopard funcionou da mesma maneira.

ps - qualquer pessoa que sugerir o uso de uma senha ssh em branco deve ser forçada a usar um sinal para que outras pessoas saibam não seguir seus conselhos.

TJ Luoma
fonte
1

Regenerar a chave pública não parece funcionar para mim (10.8), nem gerar uma nova chave SSH. Se eu, por exemplo, executar o git pull após bloquear o chaveiro de login, uma caixa de diálogo será exibida para exigir a senha da chave, em vez de primeiro tentar recuperar a senha do chaveiro de login.

No entanto, se eu matar o ssh-agent primeiro, será solicitada a senha do chaveiro de login que, em seguida, recupera a senha da chave SSH.

farra
fonte
Olá, isso parece uma pergunta separada, e não uma resposta para esta pergunta. Você pode postar novamente como uma nova pergunta?
Scot
1

Outra descoberta interessante é que, se você copiar e colar o conteúdo do arquivo PEM, poderá ter o final faltando o traço. Lembre-se de adicionar a linha final como,

-----END RSA PRIVATE KEY-----
Fang
fonte
Algo semelhante é que, ao colar uma chave ssh de algo como lastpass, ele cola tudo em uma linha. Isso parecia ser um problema para mim e, depois de dividir a chave privada no espaço em branco novamente no formato correto, funcionou.
Cameron Gagnon
1

Eu tive que executar as seguintes etapas para fazê-lo funcionar.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

O comando final deve gerar algo como: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.

netbrain
fonte
0

Eu tive o mesmo problema. Eu pareço ter corrigido isso fazendo isso.

1) Faça o backup renomeando para antigos os arquivos id_dsa e id_dsa.pub.

2) Executou um novo keygen com uma senha em branco.

Funciona com o trabalho de período launchctl, monitorando um servidor remoto, bem como efetuando login no ssh em um terminal.

Eu tenho uma função rápida, função authme no meu terminal, pois tenho o seguinte no meu .bash_profile

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Portanto, um rápido authme remoteserver.com copiará a nova chave remota.

Eu acho que o bug tem algo a ver com a senha não ser convertida (o meu antigo Snow Leopard não tinha uma).

Tente isso e veja se ajuda.

Não demorou mais de 10 minutos para fazer. Passei uma eternidade pesquisando no Google para ver se havia outras menções a isso. Este site foi o único!

Owain.

user9563
fonte
Usando uma senha em branco não é uma opção para mim, infelizmente
titaniumdecoy
0

Eu tive um problema semelhante. Acabou que a chave privada que eu estava usando estava em um formato errado. Usei o PuTTY Key Generator na minha máquina Win e o ssh no OS X espera um formato diferente - formato SSH aberto.

Aconteceu que a ferramenta que eu usei para gerar essa chave (PuTTY Key Generator) tinha a opção de converter minha chave privada no formato exigido pelo Open SSH.

Simples como:

  1. Abrir chave PuTTY Gen
  2. Carregue sua chave privada
  3. Selecione Conversões> Exportar chave OpenSSH.

O arquivo que você salvará contém sua chave privada original no formato apropriado (OpenSSH).

Greg
fonte
0

Certifique-se de que:

  1. Você está usando o formato pem para sua chave privada. Isso ocorre porque o Mac usa o cliente openssh, que funciona com o pem. O ppk é o formato proprietário do putty e não é compatível com o openssh. Você pode facilmente converter ppk em pem usando o putty keygen, caso tenha apenas ppk.
  2. As permissões no seu arquivo pem são 600. As chaves privadas devem ser acessíveis apenas pelo proprietário. Portanto, se as permissões derem acesso de leitura a qualquer outra pessoa, ela será considerada uma ameaça à segurança.

Esperamos que isso resolva o problema.

Sasidhar Sekar
fonte
-1

Use a chave .pem em vez da chave .ppk.

Abhi
fonte
11
Estamos procurando respostas longas que forneçam alguma explicação e contexto. Não basta dar uma resposta em uma linha; explique por que sua resposta está correta, idealmente com citações. As respostas que não incluem explicações podem ser removidas.
Tetsujin