Android

Usando o arquivo de configuração ssh

SSH - Usando scp para transferência de arquivos entre hosts Linux

SSH - Usando scp para transferência de arquivos entre hosts Linux

Índice:

Anonim

Uma opção seria criar um alias de bash para cada conexão de servidor remoto. No entanto, existe outra solução, muito melhor e mais simples para esse problema. O OpenSSH permite que você configure um arquivo de configuração por usuário, onde é possível armazenar diferentes opções de SSH para cada máquina remota à qual você se conecta.

Este guia aborda os conceitos básicos do arquivo de configuração do cliente SSH e explica algumas das opções de configuração mais comuns.

Pré-requisitos

Supomos que você esteja usando um sistema Linux ou macOS com o cliente OpenSSH instalado.

Local do arquivo de configuração SSH

O arquivo de configuração do OpenSSH do lado do cliente é denominado config e é armazenado no diretório .ssh no diretório inicial do usuário.

O diretório ~/.ssh é criado automaticamente quando o usuário executa o comando ssh pela primeira vez. Se o diretório não existir no seu sistema, crie-o usando o comando abaixo:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Por padrão, o arquivo de configuração SSH pode não existir, portanto, é necessário criá-lo usando o comando touch

touch ~/.ssh/config

Este arquivo deve ser legível e gravável apenas pelo usuário e não acessível por outros:

chmod 600 ~/.ssh/config

Estrutura e padrões do arquivo de configuração SSH

O arquivo de configuração SSH usa a seguinte estrutura:

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

O conteúdo do arquivo de configuração do cliente SSH é organizado em sub-rotinas (seções). Cada estrofe começa com a diretiva Host e contém opções específicas de SSH que são usadas ao estabelecer uma conexão com o servidor SSH remoto.

O recuo não é obrigatório, mas é recomendado, pois facilita a leitura do arquivo.

A diretiva Host pode conter um padrão ou uma lista de padrões separados por espaços em branco. Cada padrão pode conter zero ou mais caracteres que não sejam espaços em branco ou um dos seguintes especificadores de padrões:

  • * - Corresponde a zero ou mais caracteres. Por exemplo, Host * corresponde a todos os hosts, enquanto 192.168.0.* Corresponde a hosts na sub-rede 192.168.0.0/24 . ? - Corresponde exatamente a um caractere. O padrão, Host 10.10.0.? corresponde a todos os hosts em 10.10.0. alcance. ! - Quando usado no início de um padrão, nega a correspondência. Por exemplo, o Host 10.10.0.* !10.10.0.5 corresponde a qualquer host na sub-rede 10.10.0.5 exceto 10.10.0.5 .

O cliente SSH lê a sub-rotina do arquivo de configuração por sub-rotina e, se mais de um padrão corresponder, as opções da primeira sub-rotina correspondente terão precedência. Portanto, mais declarações específicas do host devem ser fornecidas no início do arquivo e substituições mais gerais no final do arquivo.

Você pode encontrar uma lista completa de opções ssh disponíveis, digitando man ssh_config no seu terminal ou visitando a página de manual ssh_config.

O arquivo de configuração SSH também é lido por outros programas, como scp , sftp e rsync .

Exemplo de arquivo de configuração SSH

Agora que abordamos o básico do arquivo de configuração SSH, vejamos o exemplo a seguir.

Normalmente, ao conectar-se a um servidor remoto via SSH, você especifica o nome do usuário remoto, o nome do host e a porta. Por exemplo, para dev.example.com login como um usuário chamado john em um host chamado dev.example.com na porta 2322 na linha de comando, digite:

ssh [email protected] -p 2322

Para conectar-se ao servidor usando as mesmas opções fornecidas no comando acima, basta digitar ssh dev , coloque as seguintes linhas no seu "~/.ssh/config :

~ /.ssh / config

Host dev HostName dev.example.com User john Port 2322

Agora, quando você digita ssh dev , o cliente ssh lê o arquivo de configuração e usa os detalhes de conexão especificados para o host de desenvolvimento:

ssh dev

Exemplo de arquivo de configuração SSH compartilhado

Este exemplo fornece informações mais detalhadas sobre os padrões do host e a precedência das opções.

Vamos pegar o seguinte arquivo de exemplo:

Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes

  • Quando você digita ssh targaryen , o cliente ssh lê o arquivo e aplica as opções da primeira correspondência, que é Host targaryen . Em seguida, verifica as próximas estrofes uma a uma quanto a um padrão correspondente. O próximo correspondente é Host * !martell (ou seja, todos os hosts, exceto martell ), e aplicará a opção de conexão dessa estrofe. A última definição Host * também corresponde, mas o cliente ssh usará apenas a opção Compression porque a opção User já está definida na sub-rotina Host targaryen do Host targaryen .

    A lista completa de opções usadas quando você digita ssh targaryen é a seguinte:

    HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes

    Ao executar o ssh tyrell os padrões de host correspondentes são: Host tyrell , Host *ell , Host * !martell e Host * . As opções usadas neste caso são:

    HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes

    HostName 192.168.10.50 User oberyn Compression yes

    Para todas as outras conexões, o cliente ssh utilizará as opções especificadas nas seções Host * !martell e Host * .

Substituir opção de arquivo de configuração SSH

O cliente ssh lê sua configuração na seguinte ordem de precedência:

  1. Opções especificadas na linha de comando. Opções definidas em ~/.ssh/config Opções definidas em /etc/ssh/ssh_config .

Host dev HostName dev.example.com User john Port 2322

e você deseja usar todas as outras opções, exceto conectar-se como usuário root vez de john basta especificar o usuário na linha de comando:

ssh -o "User=root" dev

A opção -F ( configfile ) permite especificar um arquivo de configuração alternativo por usuário.

Para dizer ao cliente ssh para ignorar todas as opções especificadas no arquivo de configuração ssh, use:

ssh -F /dev/null [email protected]

Conclusão

Mostramos como configurar seu arquivo de configuração ssh do usuário. Você também pode configurar uma autenticação baseada em chave SSH e conectar-se aos servidores Linux sem inserir uma senha.

Por padrão, o SSH escuta na porta 22. Alterar a porta SSH padrão adiciona uma camada extra de segurança ao servidor, reduzindo o risco de ataques automatizados.

terminal ssh