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

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

Ssh (Cliente ssh) é um programa para acessar remotamente uma máquina, ele permite que um usuário execute 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 específico do sistema e específico do usuário (personalizado). Neste tutorial, explicaremos como criar um arquivo de configuração SSH personalizado e usar determinadas opções para se conectar 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 em todo o sistema. Ele contém configurações que se aplicam a todos os usuários da SSH Client Machine.
  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, substitui as configurações padrão no arquivo de configuração em todo o sistema. Este é o arquivo que criaremos e usaremos.

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

Observação: Caso o diretório ~/.ssh Não existe no seu sistema de desktop, crie -o com as seguintes permissões.

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

O chmod O comando acima implica que somente o usuário pode ter lido, escrever e executar permissões no diretório, conforme exigido pelas configurações SSH.

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

Este arquivo geralmente não é criado por padrão, portanto você precisa criá -lo com as 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 linhas começando com '#' são considerados comentários:

Host host1 ssh_option1 = value1 ssh_option2 = value1 value2 ssh_option3 = value1 host host2 ssh_option1 = value1 ssh_option2 = value1 Valor2 host * ssh_option1 = value1 ssh_option2 = valor1 valor2 

Do formato acima:

  1. Host host1 - é uma definição de cabeçalho para host1, É aqui que uma especificação do host começa e termina com a próxima definição de cabeçalho, Host host2 fazendo uma seção.
  2. host1, host2 são simplesmente aliases do host a serem usados ​​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 valor2 Aplique a um host correspondente e deve ser recuado para formatação bem organizada.
  4. Para uma opção como ssh_option2 = value1 valor2, O valor que valor1 é considerado primeiro, então valor2.
  5. A definição do cabeçalho Hospedar * (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 igual a:

$ ssh host1 

O comando SSH acima fará as seguintes coisas:

  1. Combine o alias do host host1 No arquivo de configuração e aplica as opções definidas no cabeçalho da definição, Host host1.
  2. Em seguida, muda para a próxima seção do host, Host host2 e descobre que o nome fornecido na linha de comando não corresponde, então nenhuma opção é usada daqui.
  3. Ele prossegue para a última seção, Hospedar *, que corresponde a todos os hosts. Aqui, ele aplica todas as opções nesta seção à conexão do host. Mas não pode substituir nenhum valores de opções que já usados ​​nas seções anteriores (s).
  4. O mesmo se aplica a host2.

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

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

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

$ VI ~//.ssh/config 

E definir as seções necessárias:

Hospedar Fedora25 Nome do host 192.168.56.15 porta 22 forwardx11 sem host CentOS7 Nome do host 192.168.56.10 porta 22 forwardx11 sem host Ubuntu Nome do host 192.168.56.5 Porta 2222 Forwardx11 Sim Host * Usuário Tecmint IdentityFile ~//.protocolo ssh/id_rsa 

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

  1. Nome de anfitrião - Define o nome real do host para fazer login, alternativamente, você pode usar um endereço IP numérico, ele também é permitido (tanto na linha de comando quanto em Nome de anfitrião especificações).
  2. Do utilizador - Especifica o usuário para fazer login como.
  3. Porta - define o número da porta para se conectar 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 do protocolo SSH devem apoiar a ordem de preferência. Os valores usuais são '1' e '2', Várias versões devem ser separadas por vírgulas.
  5. IdentityFile - Especifica um arquivo do qual a identidade de autenticação DSA, ED25519, RSA ou ECDSA ou ECDSA é lida.
  6. ForwardX11 - Define se as conexões X11 serão redirecionadas automaticamente sobre o canal seguro e o conjunto de exibição. Tem dois valores possíveis "sim" ou "não".
  7. Compressão - É usado para definir compressão durante a conexão remota com o "sim" valor. O padrão é "não".
  8. ServeraliveInterval - Define um intervalo de tempo limite em segundos, após o qual se nenhuma resposta (ou dados) tiver sido recebida do servidor, o SSH enviará uma mensagem através do canal criptografado para solicitar uma resposta do servidor. o valor padrão é 0, significando 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 vivas no servidor que podem ser enviadas sem que o SSH receba qualquer resposta do servidor.
  10. Loglevel - define o nível de verbosidade que é usado ao registrar mensagens de SSH. Os valores permitidos incluem: silencioso, fatal, erro, informações, verbos. E o padrão é informação.

A maneira padrão de se conectar a qualquer host Linux remoto (CentOS 7 - no meu caso), definido na seção dois do arquivo de configuração acima, normalmente digitaríamos o comando abaixo:

$ ssh -i ~/.ssh/id_rsa -p 22 [email protegido] 

No entanto, 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 do SSH Client Config Man:

$ man ssh_config 

Por enquanto, 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 escrever de volta para nós sobre este artigo.