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.


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


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


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.


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

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.


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


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 )


@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.


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


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


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 "your_email@example.com"

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.