Pular para o conteúdo

SSH: Noções básicas

O SSH é o principal protocolo e a principal ferramenta para gerenciar servidores remotos. Ele também permite criar túneis e transferir arquivos.

  • sshd (OpenSSH Daemon): daemon do lado do servidor que escuta as conexões SSH de entrada. Autentica os usuários e estabelece sessões seguras.
  • sftp-server (subsistema do servidor SFTP): programa para transferência de arquivos usando o protocolo SFTP, normalmente iniciado de forma automática pelo daemon sshd.
  • ssh (cliente SSH): faz login em um servidor remoto, fornece um terminal virtual e executa comandos.
  • ssh-keygen: cria e gerencia chaves de autenticação.
  • scp: copia arquivos entre a máquina local e a remota usando um canal criptografado.
  • sftp: transfere arquivos por um canal seguro, parecido com o FTP.
Terminal window
ssh root@example.com

Conectar ao servidor com uma porta personalizada:

Terminal window
ssh -p 2222 root@example.com

Conectar ao servidor com uma chave privada específica:

ssh -i ~/.ssh/server_ed25519 root@example.com

O cliente SSH pode funcionar sem arquivo de configuração e obter todos os parâmetros necessários dos argumentos da linha de comando. Mesmo assim, você pode criar um arquivo de configuração chamado ~/.ssh/config. Esse arquivo deve conter as seguintes informações:

Host example.com
HostName 192.168.1.1
User root
Port 2222
IdentityFile ~/.ssh/server_ed25519
  • Host: nome do servidor. É o nome usado no comando de conexão: ssh example.com
  • HostName: endereço opcional do servidor. Se o HostName não for definido, o endereço ou nome de host correto deve ser indicado em Host
  • User: nome de usuário
  • Port: porta do servidor. Padrão: 22
  • IdentityFile: campo opcional que indica o caminho completo do arquivo da chave privada

As chaves SSH são uma forma mais segura de fazer login em um servidor SSH do que usar senhas. Elas são formadas por um par de chaves: uma chave pública e uma chave privada. A chave pública fica no servidor ao qual você quer se conectar, enquanto a chave privada permanece na sua máquina local.

Para gerar um par de chaves SSH, use o seguinte comando:

Terminal window
ssh-keygen -t ed25519 -f ~/.ssh/server_ed25519
  • ed25519 - seleciona o tipo de criptografia. Ed25519 é a melhor escolha
  • ~/.ssh/server_ed25519 - caminho do arquivo da chave privada. A chave pública será gerada como ~/.ssh/server_ed25519.pub

Depois de iniciar o comando, ele vai pedir que você digite uma senha. Essa senha dá um nível extra de segurança e precisa ser digitada ao conectar ao servidor.

A chave pública é uma única linha com o seguinte formato:

ssh-ed25519 AAAA...UUUU user@example.com

No servidor, adicione essa linha ao arquivo ~/.ssh/authorized_keys. Esse arquivo pode conter uma ou mais chaves. Para adicionar a chave pública, execute o seguinte comando:

Terminal window
echo "ssh-ed25519 AAAA...UUUU user@example.com" >>~/.ssh/authorized_keys

O encaminhamento do SSH Agent permite usar suas chaves SSH locais em um servidor remoto sem compartilhá-las. Isso é útil quando você precisa acessar outro servidor a partir do primeiro servidor sem guardar suas chaves no servidor remoto.

Você pode ativar o encaminhamento do SSH Agent com a opção -A no comando ssh:

Terminal window
ssh -A example.com

Como alternativa, você pode ativá-lo de forma permanente para um host específico no arquivo de configuração do SSH ~/.ssh/config:

Host example.com
ForwardAgent yes