# Trabalhar com frase secreta da chave SSH

Você pode proteger suas chaves SSH e configurar um agente de autenticação para que não precise redigitar a senha toda vez que usar as chaves SSH.

## Sobre frases secretas para chaves SSH

Com as chaves SSH, se alguém conseguir acessar seu computador, o invasor terá acesso a todos os sistemas que usam essas chaves. Para incluir uma camada extra de segurança, adicione uma frase secreta à sua chave SSH. Para evitar inserir a frase secreta toda vez que você se conectar, você poderá armazenar em cache a frase secreta com segurança no agente SSH.

## Adicionar ou alterar frase secreta

É possível alterar a frase secreta de uma chave privada sem gerar novamente o par de chaves. Basta digitar o seguinte comando:

```shell
$ ssh-keygen -p -f ~/.ssh/id_ed25519
> Enter old passphrase: [Type old passphrase]
> Key has comment 'your_email@example.com'
> Enter new passphrase (empty for no passphrase): [Type new passphrase]
> Enter same passphrase again: [Repeat the new passphrase]
> Your identification has been saved with the new passphrase.
```

Caso a sua chave já tenha uma frase secreta, você precisará digitá-la antes de poder alterar para uma nova frase secreta.

<div class="ghd-tool windows">

## Inicialização automática de `ssh-agent` em Git para Windows

Você pode executar `ssh-agent` automaticamente quando abre o shell do Bash ou do Git. Copie as seguintes linhas e cole-as no arquivo `~/.profile` ou `~/.bashrc` no shell do Git:

```bash
env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env
```

Se a sua chave privada não estiver armazenada em um dos locais padrão (como `~/.ssh/id_rsa`), você precisará informar ao agente de autenticação SSH o local em que ela se encontra. Para adicionar sua chave ao ssh-agent, digite `ssh-add ~/path/to/my_key`. Para saber mais, confira [Gerando uma nova chave SSH e adicionando-a ao agente SSH](/pt/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).

> \[!TIP]
> Caso deseje que o `ssh-agent` esqueça sua chave depois de algum tempo, configure-o para fazer isso executando `ssh-add -t <seconds>`.

Agora, quando você executar o Git Bash pela primeira vez, sua frase secreta será solicitada:

```shell
> Initializing new SSH agent...
> succeeded
> Enter passphrase for /c/Users/YOU/.ssh/id_rsa:
> Identity added: /c/Users/YOU/.ssh/id_rsa (/c/Users/YOU/.ssh/id_rsa)
> Welcome to Git (version 1.6.0.2-preview20080923)
>
> Run 'git help git' to display the help index.
> Run 'git help <command>' to display help for specific commands.
```

O processo `ssh-agent` continuará sendo executado até que você faça logoff, desligue o computador ou encerre o processo.

</div>

<div class="ghd-tool mac">

## Salvar a frase secreta na keychain

No Mac OS X Leopard até o OS X El Capitan, estes arquivos de chave privada padrão são tratados automaticamente:

* *.ssh/id\_rsa*
* *.ssh/identity*

Na primeira vez que você usar a chave, precisará digitar sua frase secreta. Se você optar por salvar a frase secreta com a keychain, não precisará digitá-la novamente.

Caso contrário, armazene a frase secreta na keychain quando adicionar a chave ao ssh-agent. Para saber mais, confira [Gerando uma nova chave SSH e adicionando-a ao agente SSH](/pt/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent).

</div>