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;

  1. No Firefox, clique em menu e selecione Opções.

  2. Em Opções, role até o final da página e clique em Configurar conexão….

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

Mais manuais sobre OpenSSH