como adicionar uma chave privada (dada) em ssh cuja chave pública já está configurada no servidor

2

Eu sei como configurar um novo par de chaves ssh com o github.

Se alguém me deu uma chave privada e me disse para se conectar a um servidor via ssh em um mac, como configuro isso?

NOTA: não consigo alterar as configurações do servidor.

    
por pri 12.10.2011 / 02:56

2 respostas

2

Assumo que o OpenSSH padrão está disponível no seu Mac; Se você estiver usando um programa bonito de GUI, isso pode não funcionar. Eu também suponho que você recebeu uma chave padrão OpenSSH. (As chaves comerciais ssh.com podem ser formatadas de forma diferente; pelo menos há uma década, quando usei pela última vez um provedor que ainda usava o SSH comercial.)

Talvez você já tenha uma chave privada; verifique ls -l ~/.ssh/id_* para ver se você já tem uma chave privada instalada. Se você fizer isso (e quiser manter essa chave), terá mais trabalho a fazer.

Se você ainda não tiver uma chave privada, dê uma olhada na primeira linha do arquivo. Será algo parecido com isto:

-----BEGIN RSA PRIVATE KEY-----

Se ele diz RSA , como o meu, armazene o arquivo em ~/.ssh/id_rsa . Se ele diz DSA , armazene-o em ~/.ssh/id_dsa .

Se o diretório ~/.ssh ainda não existir, crie-o:

mkdir ~/.ssh
chmod 700 ~/.ssh

O chmod 700 é importante - ssh é exigente quanto às permissões: se até mesmo a gravação em grupo estiver disponível, você poderá ter problemas.

Eu não sei a maneira mais fácil de armazenar o arquivo. Se você tiver um arquivo autônomo (anexo de e-mail, download de site, etc.), basta mover o arquivo para o lugar:

mv Path/to/the/file ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

O chmod 600 é importante - ssh é exigente quanto às permissões: se até a leitura do grupo estiver disponível, você poderá ter problemas. Eu não estou brincando - passei a maior parte da minha vida depurando problemas de conexão que foram checados em ssh . Você poderia torná-lo 400 e impedir-se de sobrescrevê-lo, mas o meu é 600 sem conseqüências ruins.

Se você tiver o arquivo copiado e colado em um texto de e-mail ou texto de uma página da Web, precisará usar um editor de texto de algum tipo para salvá-lo, copiando e colando o texto em si. (Não use o Word. BBEdit ou TextMate ou .. qualquer que seja a Apple chama seu editor de texto simples .. funcionaria.)

Agora teste:

ssh hostname

por exemplo:

$ ssh haig
Enter passphrase for key '/home/sarnold/.ssh/id_rsa': 

Se você precisar dar um nome de usuário também:

ssh username@hostname

A parte importante é o para a chave - se ele apenas pedir uma senha, provavelmente é uma senha para o endpoint remoto, e isso não funcionará. Se ele pedir a frase secreta para a chave, você está correndo.

Se você já tiver uma chave privada que deseja continuar usando, armazene o arquivo em outra coisa; por exemplo. ~/.ssh/id_rsa_for_mithra e, em seguida, adicione uma nova entrada Host em um arquivo de configuração ~/.ssh/config :

host mithra
    IdentityFile ~/.ssh/id_rsa_for_mithra

Aqui, assumi que o nome do host é mithra . Use o nome ou o endereço IP que você recebeu.

O arquivo ~/.ssh/config também pode ser usado para especificar um nome de usuário por host, se você quiser evitar dar a ele na linha de comando o tempo todo.

E a nota final: a maioria dos usuários de ssh usa o ssh-agent para armazenar uma versão descriptografada de sua chave privada em vez de redigitar a frase secreta para desbloqueá-la o tempo todo. Eu entendo que um agente ssh está integrado no OS X atualmente - valeria a pena investigar como usar isto. Talvez seja tão simples quanto executar ssh-add primeiro. (Eu gosto de ssh-add -t 3600 , então a chave funciona por uma hora antes que a versão descriptografada seja descartada. Isso ajuda a proteger o material de chave um pouco se eu sair da minha estação de trabalho sem precisar executar ssh-add -D quando eu sair.) / p>     

por 12.10.2011 / 03:24
1

Encontrei sua pergunta enquanto procurava uma maneira de gerenciar as chaves do Amazon EC2. Como você, eu já tinha uma chave para o github.

O que eu fiz foi duplicar o arquivo id_rsa existente.

cp ~/.ssh/id_rsa ~/.ssh/id_rsa_amazonhost.pem

Em seguida, substitua o conteúdo desse novo arquivo ( id_rsa_amazonhost.pem ) por meio de recortar / colar com a chave privada fornecida pela Amazon.

Em seguida, adicionei uma entrada em ~ / .ssh / config (substitua my-hostname e my-username conforme apropriado).

Host my-hostname.example.com
    IdentityFile  ~/.ssh/id_rsa_amazonhost.pem
    User my-username    

Isso me permitiu ssh my-hostname como desejado.

Para uma conexão única, você pode pular o arquivo ~ / .ssh / config e simplesmente executar

ssh -i id_rsa_amazonhost.pem my-username@my-hostname

    
por 23.05.2012 / 17:40

Tags