Secure Shell (SSH)
Para os procedimentos desta documentação, é utilizado o software OpenSSH , os sistemas operacionais conhecidos por integrar o OpenSSH a sua base, são listados nesta página do site do software.
Gerar chave SSH
ssh-keygen gera, gerencia e converte chaves de autenticação para ssh.
Para gerar chave SSH, utilize o comando:
ssh-keygen -t ed25519 -b 512
É recomendado salvar com um específico nome para chave (por padrão o nome é definido por id_ed25519).

Insira uma senha para a chave.

A seguinte mensagem de confirmação será apresentada.

ssh-agent
ssh-agent é um comando para armazenar chaves privadas usadas para autenticação da chave pública. Através do uso de variáveis de ambiente, o agente pode localizar e utilizar automaticamente para autenticação ao efetuar login em outras máquinas usando ssh.
Para carregar o serviço do ssh-agent, utilize o comando:
eval $(ssh-agent)
Para adicionar uma chave:
ssh-add .ssh/chave
Onde:
- chave: é o nome da chave a ser adicionada. 
Exemplo: ssh-add .ssh/chaveexemplo
Para verificar se possui chaves carregadas, utilize o comando:
ssh-add -l
Utilizar chave SSH
Para copiar sua chave pública SSH para Instância, utilize o comando:
ssh-copy-id -i chave.pub usuário@instância
Onde:
- chave: é o nome escolhido para a chave pública; 
- usuário: é o seu usuário dentro da máquina destino; 
- instância: é o nome completo da máquina destino. 
(Observação: esse comando vai adicionar o arquivo authorized_keys caso o mesmo não exista, se existir, a nova chave será adicionada ao final do arquivo).
Exemplo: ssh-copy-id -i chaveexemplo.pub estag@vm.unicamp.br
SSH_Config
ssh_config é o arquivo de configuração do cliente OpenSSH. Todas configurações do config, podem ser encontradas na página do software.
Exemplo 1: fixando usuário, porta, chave_privada e mantendo o agente na conexão.
Host maquina
  User usuario
  Port XXXX
  Hostname maquina.unicamp.br
  ForwardAgent yes
  IdentityFile ~/.ssh/chaveexemplo
Onde:
- maquina: é o nome dado ao host; 
- usuario: dado o usuário para acesso na máquina; 
- XXXX: a porta para acesso à máquina; 
- maquina.unicamp.br: o nome inteiro da máquina; 
- yes: para manter o agente de conexão no próximo servidor que for realizado a conexão (não necessitando carregar a chave privada novamente). 
- ~/.ssh/chaveexemplo: o caminho para a chave privada. 
Exemplo 2: fixando usuário, chave_privada e criando encaminhamento para o IP:Porta da maquina, para conseguir conectar no VNC da maquina.
Host maquina-tunel-vnc 
  User usuario
  Hostname maquina.unicamp.br 
  LocalForward PORT localhost:PORT 
  IdentityFile ~/.ssh/chaveexemplo
Onde:
- maquina-tunel-vnc: é o nome dado ao host; 
- usuario: dado o usuário para acesso na máquina 
- maquina.unicamp.br: o nome inteiro da máquina; 
- PORT: porta onde está sendo criada a conexão. 
- localhost:PORT: o IP e a porta; (Ambos PORT devem ser os mesmos). 
- ~/.ssh/chaveexemplo: o caminho para a chave privada. 
Exemplo 3: Utilizando tudo junto com um salto SSH via ProxyCommand, fixando usuário, chave_privada e criando uma conexão por porta que faça o encaminhamento para o IP:Porta da maquina para conseguir conectar no VNC da maquina.
Host maquina
  User usuario
  Port XXXX
  Hostname maquina.unicamp.br
  ForwardAgent yes
  IdentityFile ~/.ssh/chaveexemplo
Host maquina-tunel-vnc
  User usuario
  Hostname maquina.unicamp.br
  LocalForward PORT localhost:PORT
  IdentityFile ~/.ssh/chaveexemplo
  ProxyCommand ssh -W %h:%p -q maquina
Onde:
- maquina: é o nome dado ao host; 
- usuario: dado o usuário para acesso na máquina; 
- XXXX: a porta para acesso à máquina¹; 
- maquina.unicamp.br: o nome inteiro da máquina; 
- yes: para manter o agente de conexão no próximo servidor que for realizado a conexão (não necessitando carregar a chave privada novamente). 
- ~/.ssh/chaveexemplo: o caminho para chave privada para máquina. 
- maquina-tunel-vnc: é o nome dado ao host; 
- usuario: dado o usuário de acesso na máquina; 
- maquina.unicamp.br: o nome inteiro da máquina; 
- PORT: porta onde está sendo criada a conexão. 
- localhost:PORT: o IP e a porta; (Ambos PORT devem ser os mesmos). 
- ~/.ssh/chaveexemplo: o caminho para chave privada para máquina²; 
- ssh -W %h:%p -q máquina: utilizado para realizar o direcionamento (-W) com “%h:%p” (host e port da máquina), com salto (-q) para máquina) 
Observação 1: aqui é chamado direta a conexão ssh no host “maquina-tunel-vnc”, pois o comando ProxyCommand vai fazer o pulo na máquina automaticamente, quando interpretar a linha do ProxyCommand
Observação 2: caso seja necessário realizar mais de um salto, especificar sempre para a ultima máquina, por exemplo:
Host maquina3
 [...]
 ProxyCommand ssh -W %h:%p -q maquina2
Host maquina2
 [...]
 ProxyCommand ssh -W %h:%p -q maquina1
A Máquina1 não necessita de ProxyCommand (já que a mesma não possui antecessor).
Túnel SSH
Para criar uma conexão em uma porta específica do tipo socks, e configurar no navegador, siga os seguintes passos.
Passo 1: no arquivo ssh_config, insira;
Host maquina-tunel-socks
  User usuario
  Hostname maquina.unicamp.br
  DynamicForward XXXX
  IdentityFile ~/.ssh/chaveexemplo
Onde:
- maquina-tunel-socks: é o nome dado ao host; 
- usuario: dado o usuário de acesso na máquina; 
- maquina.unicamp.br: nome inteiro da máquina; 
- XXXX: porta de conexão para configurar como socks; 
- ~/.ssh/chaveexemplo: o caminho para a chave privada. 
Passo 2: configure seu navegador para obter acesso.
Utilizando o Firefox;
- No Firefox, clique em menu e selecione Opções.  
- Em Opções, role até o final da página e clique em Configurar conexão….  
- Selecione Configuração manual de proxy, em Domínio SOCKS coloque o IP/Porta da conexão.  
Após se conectar via SSH, para verificar se funcionou, no Firefox, acesse https://ifconfig.me/, o IP Address deverá estar iniciado como 143.106.XXX.XXX.