====== Usando chave do ssh ======
==== O que é chave do ssh e por quê usá-la? ====
A chave de ssh é uma credencial que permite o detentor da chave acessar um servidor ssh. Ela consiste na verdade em um par de chaves: uma privada e outra pública. A chave privada deve ser guardada com segurança e, idealmente, não compartilhada. A pública deve ser colocada no servidor ssh de destino para a autenticação.
A chave ssh é uma alternativa à senha. Ela é mais segura pois não necessita transferir a senha ao servidor, possui tamanho maior e mais complexo do que qualquer senha que o usuário possa ter e permite acesso mais fácil ao servidor, sem ter precisar lembrar de senhas.
==== Como criar uma chave ssh e transferir para o servidor ====
=== Host Linux ===
== Criar um par de chaves ==
Para criar um par de chaves com as opções padrões, basta rodar o comando ''ssh-keygen'' e responder as perguntas interativamente. Supondo //username// como o seu nome de usuário **local** e //hostname// como o host name de sua máquina:
> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home//.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home//.ssh/id_rsa
Your public key has been saved in /home//.ssh/id_rsa.pub
The key fingerprint is:
SHA256:rwnGdXmwaCQvlAfoNsbfQz8jmKkmgwlrzHzH4rPkcBI @
The key's randomart image is:
+---[RSA 3072]----+
| .. |
| . o |
| o + o . |
| *. =.. + |
| E o o.*S.+ . |
|. . .=++o+. |
|=* o..+ o.o |
|+=O+o+ . o |
|. oB= o |
+----[SHA256]-----+
Pode-se alterar o nome e o caminho das chaves e, opcionalmente, adicionar uma senha associada à chave. A senha será perguntada ao usuário tentar logar no servidor com a chave pública, a fim de aumentar a segurança. Recomenda-se utilizar a pasta e os nomes padrões para facilitar o próximo passo.
== Adicionar a chave pública ao servidor ==
No exemplo será usado o servidor ''sites.ime.usp.br'' como o servidor ssh. Além disso, //server_username// é o nome do usuário no **servidor**.
> ssh-copy-id -i -p @sites.ime.usp.br
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
@sites.ime.usp.br's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '@sites.ime.usp.br'"
and check to make sure that only the key(s) you wanted were added.
A flag ''-p '' é opcional e especifica a porta do servidor caso não seja a padrão 22. A ''-i '' especifica o caminho da chave pública (nome colocado ao criar com o ''ssh-keygen'' com o final ''.pub''), sendo opcional caso tenha usado o caminho padrão na criação das chaves.
O comando pergunta interativamente a senha do servidor ssh do seu usuário para copiar a chave.
== Acessando o servidor ==
Com as chaves criadas e a pública copiada, o usuário pode acessar o servidor com o comando ''ssh -i -p '@sites.ime.usp.br'''. Assim como no comando anterior, as flags ''-i '' e ''-p '' são opcionais. A senha da chave, caso tenha sido criada, será perguntada interativamente.
=== Host Windows ===
== Instale o PuTTY ==
Acesse o link [[https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html]] e baixe o instalador do *PuTTY*. Execute o instalador.
== Logue no sites.ime.usp.br ==
Abra o programa **PuTTY** e insira ''sites.ime.usp.br'' no campo ''Host Name'' e clique em ''Open''. Logue e deixe a janela aberta para os próximos passos.
{{:putty_login_sites.png?nolink&400|}}
== Criando as chaves ==
Execute o programa **PuTTYgen**, crie as chaves clicando no botão ''Generate'' e copie a chave pública.
{{:tutorial:puttygen.png?nolink&400|}}
== Adicionar a chave pública no servidor ==
No servidor logado no **PuTTY** edite, com seu editor de texto favorito, o arquivo ''${HOME}/.ssh/authorized_keys'' para acrescentar a chave copiada no passo anterior e feche a sessão.
== Salvar a chave privada ==
Clique no botão **Save private key** no **PuTTYgen** e salve em um lugar apropriado.
== Adicionar chave privada ao PuTTY ==
No **PuTTY**, vá em ''Connection > SSH > Auth > Credentials'' e adicione o arquivo salvo no passo anterior em ''Private key file for authentication''.
{{:tutorial:putty_add_private_key.png?nolink&400|}}
Com isso você consiguirá logar no ''sites.ime.usp.br'' usando a chave do ssh através do programa **PuTTY**.