Pequenos truques do SSH

Este artigo compilou nossas práticas recomendadas para usar o SSH com mais eficiência. Com isso, você aprenderá como:

  • Adicione o segundo fator ao login SSH
  • Encaminhamento de agente seguro para usar
  • Sair de uma sessão SSH
  • Mantenha o Terminal Permanente Aberto
  • Compartilhe uma sessão de terminal remoto com um amigo (sem o Zoom!)

Adicionando um segundo fator ao seu SSH


O segundo fator de autenticação pode ser adicionado às suas conexões SSH de cinco maneiras diferentes:

  1. Atualize seu OpenSSH e use a chave de criptografia. Em fevereiro de 2020, o suporte para chaves de criptografia FIDO U2F (Universal Second Factor) foi adicionado ao OpenSSH. Esse é um ótimo recurso novo, mas há uma nuance: somente os clientes e servidores que fizeram o upgrade para o OpenSSH versão 8.2 e posterior poderão usar chaves de criptografia, pois a atualização de fevereiro introduz novos tipos de chaves para eles. Com o comando, ssh –Vvocê pode verificar a versão do cliente do SSH e a versão do servidor com o comandonc [servername] 22

    Dois novos tipos de chaves foram adicionados à versão de fevereiro - ecdsa-sk e ed25519-sk (junto com os certificados correspondentes). Para gerar um arquivo de chave, basta inserir sua chave de criptografia e executar o comando:

    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    U2F . U2F — .

    , .

    - OpenSSH -sk-. U2F . - :

    $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk

    , , :

    $ ssh-add -K

    .
  2. PIV+PKCS11 Yubikey. SSHD . Yubico U2F+SSH PIV/PKCS11. FIDO U2F, , , .
  3. yubikey-agent ssh-. SSH Yubikeys. .
  4. Touch ID sekey. Sekey SSH , Mac’ Touch ID .
  5. Single Sign On SSH. . single sign on SSH — (MFA).

agent forwarding


O encaminhamento do agente SHH permite que um host remoto acesse o agente SSH do seu dispositivo local. Quando você usa o SSH com o encaminhamento de agente ativado (geralmente via ssh -A), haverá dois canais na conexão: sua sessão interativa e o canal de encaminhamento do agente. Por esse canal, o soquete Unix criado pelo seu agente SSH local se conecta ao host remoto. Esse é um método arriscado, pois um usuário com acesso root em um dispositivo remoto pode acessar seu agente SSH local e se passar por você na rede. Usando o agente SSH padrão do kit Open SSH, você nem sabe que isso aconteceu. Ter uma chave U2F (ou Sekey) ajudará a bloquear efetivamente qualquer tentativa de usar seu agente SSH de fora.

Mesmo com essa precaução, é uma boa idéia usar o encaminhamento de agente o mínimo possível. Você não deve usá-lo em todas as sessões - use o encaminhamento de agente apenas quando tiver certeza de sua necessidade para a sessão atual.

Saindo de uma sessão suspensa


A interrupção da rede, o comportamento não controlado dos programas ou uma sequência de escape que bloqueia a entrada do teclado são todas as possíveis causas de uma interrupção da sessão SSH.

Existem várias maneiras de encerrar uma sessão interrompida:

  1. Sair automaticamente quando a rede for interrompida. No seu .ssh / config, você precisa adicionar o seguinte:

    ServerAliveInterval 5
    ServerAliveCountMax 1

    O ssh enviará eco ao host remoto a cada segundo de ServerAliveInterval para verificar a conexão. Se mais ecos do ServerAliveCountMax não receberem uma resposta, o ssh encerrará a conexão em tempo limite e sairá da sessão.
  2. . ssh ~ () . ~. . ( .) ~? . , ~ , ~ .

? . IPv4 WiFi, IP- . SSH TCP , , , IP-, , SSH . IP-, . , TCP- . . , . IPv6 , . , .


Existem duas abordagens diferentes sobre como manter uma conexão ao alternar entre redes diferentes ou se você deseja desconectar por um curto período de tempo.

1. Use o Mosh ou o Terminal Eterno

Se você realmente precisa de uma conexão que não diminua, mesmo quando alterna entre redes, use o shell móvel do Mosh. Esse é um shell seguro que primeiro usa um handshake SSH e depois muda para seu próprio canal criptografado durante a sessão. Assim, o Mosh cria um canal separado, muito estável e seguro, capaz de suportar interrupções na Internet, alterando o endereço IP do seu laptop, graves interrupções na rede e muito mais, tudo graças à magia das conexões UDP, bem como Protocolo de sincronização Mosh.

Para usar o Mosh, você precisará instalá-lo no cliente e no servidor e abrir as portas 60000-61000 para tráfego UPD desconectado no host remoto. No futuro, será suficiente usar a conexão mosh user@server.

O Mosh opera no nível de telas e pressionamentos de teclas, o que oferece várias vantagens em relação ao encaminhamento do fluxo binário de entrada e saída padrão entre o cliente e o servidor SSH. Se precisarmos sincronizar apenas telas e pressionamentos de teclas, mais tarde, para restaurar uma conexão interrompida, ficará muito mais fácil. Enquanto o SSH armazena em buffer e envia tudo o que aconteceu, o Mosh precisa apenas armazenar em buffer as teclas digitadas e sincronizar o último quadro da janela do terminal com o cliente.

2. Use tmux

Se você deseja “ir e vir quando quiser” e manter a sessão do terminal em um host remoto, use o multiplexador de terminal tmux . Eu amo o tmux e o uso constantemente. Se sua conexão SSH for interrompida, basta reconectar e entrar para retornar à sua sessão tmux tmux attach. Além disso, possui funções maravilhosas, como guias e painéis intra-terminais, semelhantes às guias no terminal iOS e a capacidade de compartilhar terminais com outras pessoas.

Algumas pessoas gostam de embelezar seu tmux com o Byobu, um pacote que melhora muito a usabilidade do tmux e adiciona muitos atalhos de teclado a ele. O Byobu é fornecido com o Ubuntu e é fácil de instalar em um Mac via Homebrew.

Compartilhando uma sessão do terminal remoto com um amigo


Às vezes, ao depurar problemas complexos em seus servidores, você pode compartilhar uma sessão SSH com alguém que não esteja na mesma sala que você. O tmux é perfeito para essa tarefa! Basta dar apenas alguns passos:

  1. Certifique-se de que o tmux esteja no seu host bastião ou em algum servidor com o qual você trabalhará.
  2. Você precisará se conectar via SSH ao dispositivo usando uma conta.
  3. Um de vocês deve iniciar o tmux para iniciar uma sessão do tmux.
  4. Outro deve executar o tmux attach
  5. Voila! Você tem um terminal comum.

Se você quiser sessões tmux multiusuário mais sofisticadas, tente tmate, este é um fork do tmux que simplifica bastante as sessões conjuntas dos terminais.

All Articles