Pesquisa de site

Como configurar conexões SSH personalizadas para simplificar o acesso remoto


SSH (cliente SSH) é um programa para acessar remotamente uma máquina, que permite ao usuário executar comandos em um host remoto. É um dos métodos mais recomendados para fazer login em um host remoto, pois foi projetado para fornecer comunicações criptografadas seguras entre dois hosts não confiáveis em uma rede insegura.

SSH usa um arquivo de configuração para todo o sistema e também um arquivo de configuração específico do usuário (personalizado). Neste tutorial, explicaremos como criar um arquivo de configuração ssh personalizado e usar certas opções para conectar-se a hosts remotos.

Requisitos:

  1. Você deve ter instalado o cliente OpenSSH em seu desktop Linux.
  2. Entenda as opções comuns usadas para conexões remotas via ssh.

Arquivos de configuração do cliente SSH

Abaixo estão os locais dos arquivos de configuração do cliente ssh:

  1. /etc/ssh/ssh_config – este é o arquivo de configuração padrão para todo o sistema. Ele contém configurações que se aplicam a todos os usuários da máquina cliente SSH.
  2. ~/.ssh/config ou $HOME/.ssh/config – é o arquivo de configuração específico/personalizado do usuário. Possui configurações que se aplicam a um usuário específico. Portanto, ele substitui as configurações padrão no arquivo de configuração de todo o sistema. Este é o arquivo que criaremos e usaremos.

Por padrão, os usuários são autenticados em ssh usando senhas, no entanto, você pode configurar o login ssh sem senha usando ssh keygen em 5 etapas simples.

Nota: Caso o diretório ~/.ssh não exista em seu sistema desktop, crie-o com as seguintes permissões.


mkdir -p ~/.ssh
chmod 0700 ~/.ssh   

O comando chmod acima implica que apenas o usuário pode ter permissões de leitura, gravação e execução no diretório conforme exigido pelas configurações de ssh.

Como criar um arquivo de configuração SSH específico do usuário

Este arquivo geralmente não é criado por padrão, então você precisa criá-lo com permissões de leitura/gravação apenas para o usuário.


touch ~/.ssh/config
chmod 0700 ~/.ssh/config

O arquivo acima contém seções definidas pelas especificações dos hosts, e uma seção é aplicada apenas aos hosts que correspondem a um dos padrões definidos na especificação.

O formato convencional de ~/.ssh/config é o seguinte, e todas as linhas vazias, bem como as linhas que começam com '#' são consideradas como comentários:


Host    host1
	ssh_option1=value1
	ssh_option2=value1 value2
	ssh_option3=value1 

Host    host2
	ssh_option1=value1
	ssh_option2=value1 value2

Host  *
	ssh_option1=value1
	ssh_option2=value1 value2

Do formato acima:

  1. Host host1 – é uma definição de cabeçalho para host1, é aqui que uma especificação de host começa e termina com a próxima definição de cabeçalho, Host host2 fazendo uma secção.
  2. host1, host2 são simplesmente aliases de host para usar na linha de comando, eles não são os nomes de host reais dos hosts remotos.
  3. As opções de configuração como ssh_option1=value1, ssh_option2=value1 value2 se aplicam a um host correspondente e devem ser recuadas para uma formatação bem organizada.
  4. Para uma opção como ssh_option2=value1 valor2, o valor valor1 é considerado primeiro e depois valor2.
  5. A definição do cabeçalho Host * (onde * é um padrão – curinga que corresponde a zero ou mais caracteres) corresponderá a zero ou mais hosts.

Ainda considerando o formato acima, é assim que o ssh lê o arquivo de configuração. Se você executar um comando ssh para acessar remotamente host1 assim:


ssh host1

O comando ssh acima fará o seguinte:

  1. corresponde ao alias do host host1 no arquivo de configuração e aplica as opções definidas no cabeçalho de definição, Host host1.
  2. em seguida, passa para a próxima seção do host, Host host2 e descobre que o nome fornecido na linha de comando não corresponde, portanto, nenhuma opção é usada aqui.
  3. Prossegue para a última seção, Host *, que corresponde a todos os hosts. Aqui, aplica todas as opções desta seção à conexão do host. Mas não pode substituir nenhum valor de opções que já foram usadas nas seções anteriores.
  4. O mesmo se aplica ao host2.

Como usar o arquivo de configuração SSH específico do usuário

Depois de entender como funciona o arquivo de configuração do cliente ssh, você pode criá-lo da seguinte maneira. Lembre-se de usar opções e valores (aliases de host, números de porta, nomes de usuário e assim por diante) aplicáveis ao seu ambiente de servidor.

Abra o arquivo de configuração com seu editor favorito:


vi ~/.ssh/config

E defina as seções necessárias:


Host fedora25
        HostName 192.168.56.15
        Port 22
        ForwardX11 no

Host centos7
        HostName 192.168.56.10
        Port 22
        ForwardX11 no

Host ubuntu
        HostName 192.168.56.5
        Port 2222
        ForwardX11 yes

Host *
        User tecmint
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
        Compression yes
        ServerAliveInterval 60
        ServerAliveCountMax 20
        LogLevel INFO

Uma explicação detalhada das opções de configuração ssh acima.

  1. HostName – define o nome real do host para fazer login, alternativamente, você pode usar endereços IP numéricos, também é permitido (tanto na linha de comando quanto nas especificações de HostName) .
  2. Usuário – especifica o usuário com o qual fazer login.
  3. Porta – define o número da porta para conexão no host remoto, o padrão é 22. Use o número da porta configurado no arquivo de configuração sshd do host remoto.
  4. Protocolo – esta opção define as versões de protocolo que o ssh deve suportar em ordem de preferência. Os valores usuais são ‘1’ e ‘2’, múltiplas versões devem ser separadas por vírgulas.
  5. IdentityFile – especifica um arquivo no qual a identidade de autenticação DSA, Ed25519, RSA ou ECDSA do usuário é lida.
  6. ForwardX11 – define se as conexões X11 serão redirecionadas automaticamente pelo canal seguro e DISPLAY configurado. Possui dois valores possíveis “sim” ou “não”.
  7. Compressão – é usado para definir a compressão durante a conexão remota com o valor “sim”. O padrão é “não”.
  8. ServerAliveInterval – define um intervalo de tempo limite em segundos após o qual, se nenhuma resposta (ou dados) for recebida do servidor, o ssh enviará uma mensagem através do canal criptografado para solicitar uma resposta do servidor. O valor padrão é 0, o que significa que nenhuma mensagem será enviada ao servidor, ou 300 se a opção BatchMode tiver sido definida.
  9. ServerAliveCountMax – define o número de mensagens ativas do servidor que podem ser enviadas sem que o ssh receba qualquer resposta do servidor.
  10. LogLevel – define o nível de detalhamento usado ao registrar mensagens do ssh. Os valores permitidos incluem: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 e DEBUG3. E o padrão é INFO.

A forma padrão de conexão com qualquer host Linux remoto (CentOS 7 – no meu caso), definida na seção dois do arquivo de configuração acima, normalmente digitaríamos o comando abaixo:


ssh -i ~/.ssh/id_rsa -p 22 [email 

Porém, com o uso do arquivo de configuração do cliente ssh, podemos simplesmente digitar o seguinte comando:


ssh centos7 

Você pode encontrar mais opções e exemplos de uso na página man de configuração do cliente ssh:


$man ssh_config

Por enquanto é isso, neste guia explicamos como usar um arquivo de configuração do cliente ssh específico do usuário (personalizado) no Linux. Use o formulário de feedback abaixo para nos escrever sobre este artigo.