Skip to main content

Gerando uma nova chave SSH e adicionando-a ao agente SSH

Depois de verificar a existência de chaves SSH, é possível gerar uma nova chave SSH para autenticação e adicioná-la ao ssh-agent.

Platform navigation

Sobre frases secretas da chave SSH

Você pode acessar e gravar dados nos repositórios em GitHub usando o protocolo SSH (Secure Shell Protocol). Ao se conectar por meio do SSH, você se autentica usando um arquivo de chave privada no computador local. Para obter mais informações, confira "Sobre o SSH".

Ao gerar uma chave SSH, você pode adicionar uma frase secreta para proteger ainda mais a chave. Sempre que você usar a chave, deverá inserir a frase secreta. Se sua chave tiver uma frase secreta e você não quiser inserir a frase secreta sempre que usar a chave, poderá adicionar sua chave ao agente SSH. O agente SSH gerencia suas chaves SSH e lembra sua frase secreta.

Se você ainda não tem uma chave SSH, você deve gerar uma nova chave SSH para usar para a autenticação. Se você não tem certeza se já tem uma chave SSH, você pode verificar se há chaves existentes. Para obter mais informações, confira "Verificar se há chaves SSH".

Se você deseja usar uma chave de segurança de hardware para efetuar a autenticação em GitHub, você deverá gerar uma nova chave SSH para a sua chave de segurança de hardware. Você deve conectar a sua chave de segurança de hardware ao seu computador ao efetuar a a sua autenticação com o par de chaves. Para obter mais informações, confira as notas sobre a versão do OpenSSH 8.2.

Gerar uma nova chave SSH

Você pode gerar uma nova chave SSH no computador local. Depois de gerar a chave, você pode adicionar a chave pública à sua conta em GitHub.com para habilitar a autenticação para operações do Git no SSH.

Observação: o GitHub aprimorou a segurança removendo tipos de chaves mais antigos e não seguros em 15 de março de 2022.

Desde essa data, não há mais suporte para as chaves DSA (ssh-dss). Não é possível adicionar novas chaves DSA à sua conta pessoal em GitHub.

As chaves RSA (ssh-rsa) com um valid_after antes de 2 de novembro de 2021 podem continuar usando qualquer algoritmo de assinatura. As chaves RSA geradas após essa data precisam usar um algoritmo de assinatura SHA-2. Talvez alguns clientes mais antigos precisem ser atualizados para usar as assinaturas SHA-2.

  1. Abra TerminalTerminalGit Bash.

  2. Cole o texto abaixo, substituindo o email usado no exemplo pelo seu endereço de email GitHub.

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    Observação: se estiver usando um sistema herdado que não dá suporte ao algoritmo Ed25519, use:

     ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    Isto cria uma nova chave SSH, usando o nome de e-mail fornecido como uma etiqueta.

    > Generating public/private ALGORITHM key pair.
    

    Quando for solicitado a inserir um arquivo para salvar a chave, pressione Enter para aceitar o local padrão do arquivo. Observe que, se você criou chaves SSH anteriormente, ssh-keygen pode pedir que você reescreva outra chave. Nesse caso, recomendamos criar uma chave SSH personalizada. Para fazer isso, digite o local do arquivo padrão e substitua id_ALGORITHM pelo nome da chave personalizada.

    > Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]
    
    > Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]
    
    > Enter a file in which to save the key (/home/YOU/.ssh/id_ALGORITHM):[Press enter]
    
  3. No prompt, digite uma frase secreta segura. Para obter mais informações, confira "Trabalhar com frase secreta da chave SSH".

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    

Adicionar sua chave SSH ao ssh-agent

Antes de adicionar uma nova chave SSH ao agente para gerenciar suas chaves, você deve verificar as chaves SSH existentes e gerado uma nova chave SSH. Ao adicionar sua chave SSH ao agente, use o comando ssh-add padrão do macOS e não um aplicativo instalado pelo MacPorts, pelo Homebrew ou por alguma outra fonte externa.

  1. Inicie o ssh-agent em segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Dependendo do seu ambiente, talvez seja necessário usar um comando diferente. Por exemplo, talvez seja necessário usar o acesso raiz executando sudo -s -H antes de iniciar o ssh-agent ou usar exec ssh-agent bash ou exec ssh-agent zsh para executar o ssh-agent.

  2. Se estiver usando o macOS Sierra 10.12.2 ou posterior, precisará modificar o arquivo ~/.ssh/config para carregar automaticamente as chaves no ssh-agent e armazenar as senhas no conjunto de chaves.

    • Primeiro, verifique se o arquivo ~/.ssh/config existe no local padrão.

      $ open ~/.ssh/config
      > The file /Users/YOU/.ssh/config does not exist.
      
    • Se o arquivo não existir, crie o arquivo.

      touch ~/.ssh/config
      
    • Abra o arquivo ~/.ssh/config e modifique-o para conter as linhas a seguir. Se o seu arquivo de chave SSH tiver um nome ou caminho diferente do exemplo de código, modifique o nome ou o caminho para corresponder à sua configuração atual.

      Text
      Host github.com
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/id_ed25519
      

      Observações:

      • Se você optou por não adicionar uma frase secreta à chave, você deve omitir a linha UseKeychain.

      • Se você vir um erro Bad configuration option: usekeychain, adicione uma linha adicional à seção Host *.github.com da configuração.

        Text
        Host github.com
          IgnoreUnknown UseKeychain
        
  3. Adicione sua chave SSH privada ao ssh-agent e armazene sua frase secreta no keychain. Se você criou sua chave com um nome diferente ou está adicionando uma chave existente que tenha outro nome, substitua id_ed25519 no comando pelo nome do arquivo de chave privada.

    ssh-add --apple-use-keychain ~/.ssh/id_ed25519
    

    Observação: a opção --apple-use-keychain armazena a frase secreta no seu conjunto de chaves quando você adiciona uma chave SSH ao ssh-agent. Se você optou por não adicionar uma frase secreta à chave, execute o comando sem a opção --apple-use-keychain.

    A opção --apple-use-keychain está na versão padrão da Apple de ssh-add. Em versões do macOS anteriores à Monterey (12.0), os sinalizadores --apple-use-keychain e --apple-load-keychain usavam a sintaxe -K e -A, respectivamente.

    Caso não tenha a versão standard de ssh-add da Apple instalada, você poderá receber uma mensagem de erro. Para obter mais informações, confira "Erro: ssh-add: opção ilegal -- apple-use-keychain".

    Se você continuar recebendo avisos para fornecer sua frase secreta, talvez seja necessário adicionar o comando ao arquivo ~/.zshrc (ou ao arquivo ~/.bashrc para bash).

  4. Adicione a chave pública SSH à sua conta em GitHub. Para obter mais informações, confira "Adicionar uma nova chave SSH à sua conta do GitHub".

Se você tiver o GitHub Desktop instalado, poderá usá-lo para clonar repositórios e não lidar com chaves SSH.

  1. Em uma nova janela do PowerShell com privilégios elevados de administrador, certifique-se de que o agente ssh esteja em execução. Use as instruções de "Como iniciar o ssh-agent automaticamente" descritas em "Trabalhar com frase secreta da chave SSH" ou inicie-o manualmente:

    # start the ssh-agent in the background
    Get-Service -Name ssh-agent | Set-Service -StartupType Manual
    Start-Service ssh-agent
    
  2. Em uma janela de terminal sem permissões elevadas, adicione sua chave privada SSH ao agente ssh. Se você criou sua chave com um nome diferente ou está adicionando uma chave existente que tenha outro nome, substitua id_ed25519 no comando pelo nome do arquivo de chave privada.

    ssh-add c:/Users/YOU/.ssh/id_ed25519
    
  3. Adicione a chave pública SSH à sua conta em GitHub. Para obter mais informações, confira "Adicionar uma nova chave SSH à sua conta do GitHub".

  1. Inicie o ssh-agent em segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Dependendo do seu ambiente, talvez seja necessário usar um comando diferente. Por exemplo, talvez seja necessário usar o acesso raiz executando sudo -s -H antes de iniciar o ssh-agent ou usar exec ssh-agent bash ou exec ssh-agent zsh para executar o ssh-agent.

  2. Adicione sua chave SSH privada ao ssh-agent.

    Se você criou sua chave com um nome diferente ou está adicionando uma chave existente que tenha outro nome, substitua id_ed25519 no comando pelo nome do arquivo de chave privada.

    ssh-add ~/.ssh/id_ed25519
    
  3. Adicione a chave pública SSH à sua conta em GitHub. Para obter mais informações, confira "Adicionar uma nova chave SSH à sua conta do GitHub".

Gerar uma nova chave SSH para uma chave de segurança de hardware

Se você estiver usando macOS ou Linux, Talvez você precise atualizar seu cliente SSH ou instalar um novo cliente SSH antes de gerar uma nova chave SSH. Para obter mais informações, confira "Erro: Tipo de chave desconhecido".

  1. Insira sua chave de segurança de hardware no seu computador.

  2. Abra TerminalTerminalGit Bash.

  3. Cole o texto abaixo, substituindo o endereço de email usado no exemplo pelo endereço de email associado à sua conta no GitHub.

    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    
    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    
    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    

    Observação: se houver uma falha no comando e você receber o erro invalid format ou feature not supported,, você poderá estar usando uma chave de segurança de hardware que não dá suporte ao algoritmo Ed25519. Insira o comando a seguir.

     ssh-keygen -t ecdsa-sk -C "your_email@example.com"
    
  4. Quando solicitado, toque no botão da sua chave de segurança de hardware.

  5. Quando for solicitado a "Insira um arquivo para salvar a chave", pressione Enter para aceitar o local padrão do arquivo.

    > Enter a file in which to save the key (/Users/YOU/.ssh/id_ed25519_sk): [Press enter]
    
    > Enter a file in which to save the key (c:\Users\YOU\.ssh\id_ed25519_sk):[Press enter]
    
    > Enter a file in which to save the key (/home/YOU/.ssh/id_ed25519_sk):[Press enter]
    
  6. Quando precisar digitar uma frase secreta, pressione ENTER.

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    
  7. Adicione a chave pública SSH à sua conta em GitHub. Para obter mais informações, confira "Adicionar uma nova chave SSH à sua conta do GitHub".