Chaves SSH do Windows 10

112

Estou tendo muita dificuldade em colocar minhas chaves SSH em funcionamento após instalar o Windows 10. O método normal é criá-las e jogá-las na conta do usuário em .ssh. Esta pasta não parece estar disponível no Windows 10.

Alguém mais se deparou com isso? Eu preciso ter 3 chaves SSH para diferentes repositórios e isso está realmente me segurando.

Rudenate3
fonte
2
O Windows 10 está escondendo as pastas de pontos?
Leland Barton
Não, isso foi o que eu pensei no início também, mas adicionei alguns desde a instalação.
Rudenate
2
Por favor, mova sua pergunta para Superusuário . Está fora do assunto aqui.
Martin Prikryl
3
@MartinPrikryl Uma vez que muita codificação no Linux, o uso do Github, etc. envolve as chaves ssh e .ssh, eu diria que é muito importante para o Stackoverflow.
Haziz
2
Eu concordo com o Martin. Uma pergunta de programação é uma pergunta sobre como escrever um programa, não qualquer pergunta que um programador possa fazer.
Bacon Bits de

Respostas:

130
  1. Abra a linha de comando do Windows (digite "cmd" na caixa de pesquisa e pressione Enter).
  2. O padrão é sua pasta de início, então você não precisa cdfazer uma diferente.
  3. Tipo ssh-keygen
  4. Siga as instruções e você está pronto para ir
  5. Suas chaves ssh devem ser armazenadas no diretório escolhido, o padrão é: /c/Users/YourUserName/.ssh/id_rsa.pub

ps: Se você instalou o git com integração com bash (como eu), abra "Git Bash" em vez de "cmd" na primeira etapa

Frenesi divertido digital
fonte
36
isso parece ótimo, exceto que não funciona. sem comandossh-keygen
roberto tomás
10
por algum motivo, tive que executar o ssh-keygencomando no shell git-bash em vez do cmd-shell.
Olian04 de
6
Para isso, você pode usar Git Bash sheel ou git cmd, você não pode usar Windows cmd.
Pavan T
6
Em dezembro de 2018, funcionou fora da caixa no Win 10 para mim
Urs
1
@Suncatcher Sim. Para fazer o login no Github, DigitalOcean, etc., você precisa da chave pública que está em "id_rsa.pub" na mesma pasta. Abra-o com um editor de texto como o bloco de notas e copie e cole onde precisar adicionar sua chave SSH.
Goose
57

ATUALIZAÇÃO 07-04-2019: Testei hoje com uma nova versão do windows 10 (build 1809, "atualização de outubro de 2018") e não só o cliente SSH aberto não está mais em beta, como já está instalado. Então, tudo o que você precisa fazer é criar a chave e configurar seu cliente para usar SSH aberto em vez de putty (pagent):

  1. abrir prompt de comando (cmd)
  2. entre ssh-keygene pressione enter
  3. pressione Enter para todas as configurações. agora sua chave está salva em c: \ Users \ .ssh \ id_rsa.pub
  4. Abra seu cliente git e configure-o para usar SSH aberto

Eu testei em Git Extensions e Source Tree e funcionou com meu repositório pessoal no GitHub. Se você estiver em uma versão anterior do Windows ou preferir um cliente gráfico para SSH, leia abaixo.

04/06/2018 UDPATE:

No Windows 10, a partir da versão 1709 (win + R e digite winverpara encontrar o número da compilação), a Microsoft está lançando uma versão beta do cliente e servidor OpenSSH. Para poder criar uma chave, você precisará instalar o servidor OpenSSH. Para fazer isso, siga estas etapas:

  1. abra o menu iniciar
  2. Digite "recurso opcional"
  3. selecione "Adicionar um recurso opcional"
  4. Clique em "Adicionar um recurso"
  5. Instale o "Open SSH Client"
  6. Reinicie o computador

Agora você pode abrir um prompt ee ssh-keygeno cliente será reconhecido pelo windows. Eu não testei isso. Se você não tem o Windows 10 ou não deseja usar o beta, siga as instruções abaixo sobre como usar o putty.


ssh-keygennão vem instalado com o windows. Veja como criar uma chave ssh com Putty:

  1. Instale massa
  2. Open PuttyGen
  3. Verifique o tipo de chave e o número de bytes a usarParâmetros PuttyGen
  4. Mova o mouse sobre a barra de progresso chave geradora com entrada do mouse
  5. Agora você pode definir uma senha e salvar as chaves públicas e privadas caixa de diálogo chave criada

Para chaves openssh, são necessárias mais algumas etapas:

  1. copie o texto da caixa de texto "Chave pública para colar" e salve-o como "id_rsa.pub"
  2. Para salvar a chave privada no formato openssh, vá para Conversões-> Exportar chave OpenSSH (se você não definiu uma chave de acesso, ele solicitará que você confirme que não deseja uma chave de acesso) menu para converter a chave para o formato OpenSSH
  3. Salve-o como "id_rsa"

Agora que as chaves estão salvas. Comece pagente adicione a chave privada lá (o arquivo ppk no formato do Putty) diálogo de teclas de paginação

Lembre-se de que pagentdeve estar em execução para que a autenticação funcione

Franksands
fonte
6
ssh-keygen está incluído no Windows 10, não tenho certeza de qual versão, em "Gerenciar recursos opcionais"
sebbu
1
@sebbu Na verdade, agora no Windows 10 você pode instalar uma versão beta do Open SSH Server em "Manage Optional Features" e isso o levará ao ssh-keygen junto com algumas outras coisas. Mas não vem instalado e não é exatamente fácil de encontrar. Vou atualizar minha resposta.
franksands
1
@KarlMorrison pagent é o gui para realizar a autenticação ssh. geralmente é encontrado no menu iniciar.
franksands
1
Você não precisa instalar o Open SSH Server. O recurso Open SSH Client inclui ssh-keygen.
Onots
1
@Onots Eu testei com uma nova versão do windows 10 (atualização de outubro de 2018) e não só o cliente ssh aberto é suficiente, mas já vem instalado: D Vou atualizar minha resposta
franksands
31

WINDOWS: Se você tiver o git para windows instalado, vá para sua pasta.

insira a descrição da imagem aqui

Procure no diretório bin. Existe um arquivo sh.exe. Execute isso.

insira a descrição da imagem aqui

Em seguida, digite:

ssh-keygen -t rsa -C "seu e-mail aqui"

Siga as instruções e digite:

cat ~ / .ssh / id_rsa.pub | grampo

Ele copia a chave para sua área de transferência. Agora você pode colar essa chave pública no lado do servidor.

Daniel
fonte
13
  1. Abra a linha de comando do Windows (digite "cmd" na caixa de pesquisa e pressione Enter).
  2. O padrão é sua pasta de início, então você não precisa cdfazer uma diferente.
  3. Tipo mkdir .ssh
aruanoc
fonte
9

Aviso: Se você estiver salvando suas chaves em C: /User/username/.ssh (o local padrão), certifique-se de fazer backup de suas chaves em algum lugar (por exemplo, seu gerenciador de senhas).

Após a atualização mais recente do Windows 10 (versão 1607), minha pasta .ssh estava vazia. É aqui que minhas chaves sempre estiveram, mas o Windows decidiu excluí-las durante a atualização.

Felizmente eu tinha feito backup de minhas chaves ... Mas ... Aposto que algumas pessoas irão reverter seus PCs hoje.

Andrew
fonte
Então, onde a maioria dos aplicativos espera que você armazene suas chaves?
wcochran
3
provavelmente na pasta que o Windows exclui aleatoriamente ao atualizar o Windows 10?
Andrew
8

Estou executando o Microsoft Windows 10 Pro, versão 10.0.17763 Build 17763 e vejo minha pasta .ssh facilmente em C: \ Users \ jrosario \ .ssh sem ter que editar permissões ou qualquer coisa (embora no Explorador de Arquivos eu tenha selecionado "Mostrar arquivos, pastas e unidades ocultas"): insira a descrição da imagem aqui

As chaves são armazenadas em um arquivo de texto denominado known_hosts, que se parece mais ou menos com isto: insira a descrição da imagem aqui

ShieldOfSalvation
fonte
5

Eu encontrei uma exceção notável que no Windows 10, usando a rota descrita, só gravou os arquivos na pasta se os nomes dos arquivos não foram especificados no gerador ssh-keygen.

fornecer um nome de chave personalizado fazia com que os arquivos contendo as chaves RSA pública e privada não fossem gravados na pasta.

  • Abra a linha de comando do Windows
  • Tipo ssh-keygen
  • Deixe o nome do arquivo em branco, basta pressionar voltar,
  • Defina sua senha
  • Gere seus arquivos de chave. Eles agora existirão. e ser armazenado emc:/Users/YourUserName/.ssh/

( usando linha de comando de administrador e Windows 10 Pro )

Martin
fonte
@Braineeee negativo. Isso NÃO substituirá suas chaves; se as chaves existirem atualmente no destino, na janela da linha de comando, ele perguntará se deseja substituir essas chaves. Outras chaves na mesma pasta não são afetadas . Eu sei que depois de ler seu comentário fiz um teste e descobri que era assim.
Martin,
Você já descobriu por quê?
Damainman
@Damainman infelizmente ainda não tive a chance de explorar isso mais, então não:-/
Martin
1
Obrigado @Martin você salvou meu dia. Sou capaz de criar arquivos com nomes diferentes. Temos que fornecer o separador de caminho de forma unix! O seguinte funcionou para mim. ssh-keygen -t ed25519 -C "Minha chave do Github" Digite o arquivo no qual deseja salvar a chave (C: \ Usuários \ bilix / .ssh / id_ed25519): c: \ usuários \ bilix \ .ssh \ id_ed25519_github
Prakash P
@PrakashP fico feliz em ajudar!
Martin
4

Crie uma chave privada / pública:

  1. Terminal aberto para cima ( git bash, PowerShell, cmd.exeetc.)
  2. Digitar ssh-keygen
  3. Pressione Enter para salvar o arquivo padrão ( ~/.ssh/id_rsa)
  4. Pressione enter para a senha padrão (sem senha)
  5. Pressione Enter novamente
  6. Observe a saída e certifique-se de que RSAé 3072ou acima

Agora você criou um par de chaves privadas / públicas.

Para GIT, a chave deve ter uma força de 2048, deve estar localizada no .sshdiretório de usuários e ser chamada id_rsae id_rsa.pub. Ao colar as chaves em qualquer lugar, certifique-se de usar um programa que não adiciona novas linhas, como o VIM.

K - A toxicidade em SO está crescendo.
fonte
2

Finalmente consegui fazer funcionar executando a abertura da linha de comando com "Executar um Administrador", embora já fosse administrador e pudesse criar o diretório manualmente

adelaidedave
fonte
1

Se você tiver o Windows 10 com o cliente OpenSSH, poderá gerar a chave, mas terá problemas para copiá-la para a caixa Linux de destino, pois o comando ssh-copy-id não faz parte do conjunto de ferramentas do cliente.

Tendo esse problema, escrevi uma pequena função do PowerShell para resolver isso, que você adiciona ao seu perfil.

function ssh-copy-id([string]$userAtMachine, [string]$port = 22) {   
    # Get the generated public key
    $key = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    # Verify that it exists
    if (!(Test-Path "$key")) {
        # Alert user
        Write-Error "ERROR: '$key' does not exist!"            
    }
    else {  
        # Copy the public key across
        & cat "$key" | ssh $userAtMachine -p $port "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

Você pode obter a essência aqui

Eu tenho uma breve escrita sobre isso aqui

Rad
fonte
0

Além disso, você pode tentar (para Windows 10 Pro) Executar o Powershell como administrador e digitar ssh-keygen -t rsa -b 4096 -C "[email protected]"

Chavy
fonte