Acesso Remoto Usando SSH

Use conexões SSH para acessar recursos, redes e aplicativos remotos de forma segura.

Acessar Remotamente Serviços e Redes Usando SSH

O encaminhamento de porta SSH, também conhecido como túnel SSH, transporta dados com segurança por uma conexão SSH criptografada entre um sistema local e um remoto. Depois que um túnel SSH é estabelecido, o cliente SSH escuta em uma porta local especificada e encaminha qualquer tráfego que chegue a essa porta por meio da conexão com a porta remota correspondente.

Ao criptografar dados em trânsito, o encaminhamento de porta SSH garante que informações confidenciais sejam seguras e inacessíveis, permite o acesso seguro a serviços e redes remotas sem exposição direta à internet e ignora firewalls e restrições de rede.

Os três principais tipos de encaminhamento de porta SSH são:

Você pode usar o encaminhamento de porta para acessar um serviço que não esteja exposto à interface de rede pública. Você pode configurar um encaminhamento de porta local para acessar um serviço (como um banco de dados) em um servidor remoto. O banco de dados no servidor não está exposto à interface de rede pública, mas você pode criar um túnel de uma máquina local para a porta interna do servidor de banco de dados. Em seguida, você pode estabelecer conexão com o localhost e todo o tráfego seria encaminhado pelo túnel SSH para o banco de dados remoto.

Você pode usar o encaminhamento de porta reversa para conceder a alguém fora da rede local acesso a um serviço interno. Por exemplo, você pode querer mostrar a um desenvolvedor companheiro um aplicativo da web que você desenvolveu na máquina local. Como a máquina não tem um IP público, o outro desenvolvedor não pode acessar o aplicativo pela internet. No entanto, se você tiver acesso a um servidor SSH remoto, poderá configurar o encaminhamento de porta reversa para fornecer acesso ao desenvolvedor.

Configurar Encaminhamento de Porta no Servidor

Para configurar o encaminhamento de porta SSH:

  1. Em uma linha de comando, usando privilégios administrativos, estabeleça conexão com a instância usando SSH.
  2. Edite o arquivo /etc/ssh/sshd_config. No mínimo, verifique os seguintes parâmetros:
    • AllowTCPForwarding

      Permite o encaminhamento de porta TCP. Quando omitido, o padrão é yes, que ativa encaminhamento de porta TCP única e proxy SOCKS

    • AllowStreamLocalForwarding

      Permite o encaminhamento de soquetes de domínio UNIX. Quando omitido, o padrão é yes.

Encaminhamento de Porta Local

O encaminhamento de porta local por SSH mapeia uma porta local no sistema cliente para uma porta remota no sistema do servidor. Essa configuração permite acessar serviços no sistema remoto que, de outra forma, estão inacessíveis porque os serviços podem estar sendo executados por um firewall ou podem não estar escutando em uma interface de rede pública.

Para criar um túnel de avanço TCP direto, use a opção ssh -L:

ssh -L <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • bind_address

    Opcional e designa uma interface local para escutar conexões. Se for omitido, o ssh só se vincula às interfaces de loopback. Para vincular em todas as interfaces, você pode usar "0.0.0.0" ou "::".

  • port

    O número da porta local. Você pode usar qualquer número de porta maior que 1024.

  • destination

    O IP ou o nome do host da máquina de destino. Se o destino estiver no próprio servidor remoto, você poderá usar localhost.

  • destination_port

    Porta na máquina de destino.

  • user@remote_ssh_server

    O endereço IP do servidor e do usuário SSH remoto.

Por exemplo:

ssh -L <8080>:localhost:<8888> <user>@<129.145.0.164>

Isso abriria uma conexão SSH com o servidor remoto em 192.168.1.20 e abriria um túnel para a porta localhost 8888.

Encaminhamento de Porta Dinâmica

Use o encaminhamento de porta dinâmico para que o cliente SSH escute em uma porta de binding especificada e atue como um servidor proxy SOCKS. Não é necessário especificar um host de destino, pois todas as conexões de entrada na porta especificada são encaminhadas pelo túnel para uma porta dinâmica na máquina de destino.

Para criar uma porta dinâmica para frente, use a opção ssh -D.

ssh -D <bind_address>:<port> <user>@<remote_ssh_server>

Reverter Encaminhamento de Porta

Um túnel reverso encaminha qualquer conexão recebida no servidor SSH remoto para a rede cliente local.

Para criar uma porta reversa para frente, use a opção ssh -R.

  • Para encaminhamento reverso de porta local:
    ssh -R <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • Para encaminhamento reverso de porta dinâmica:
    ssh -R <bind_address>:<port> <user>@<remote_ssh_server>

Acessar Remotamente Aplicativos Baseados em X11 Usando SSH

O encaminhamento X11 permite usar uma conexão SSH para iniciar um aplicativo gráfico baseado em X11 em um sistema Oracle Linux remoto e usá-lo de um sistema local. O sistema remoto não precisa ter um ambiente de desktop gráfico ou servidor X11 em execução, mas o sistema local deve ter um serviço compatível com X11 em execução.

Ative o encaminhamento X11 no servidor remoto

  1. Em uma linha de comando, usando privilégios administrativos, estabeleça conexão com a instância usando SSH.
  2. Ative X11Forwarding no arquivo /etc/ssh/sshd_config.

    Se X11Forwarding for omitido de /etc/ssh/sshd_config, o padrão será no. Para ativar o encaminhamento X11, adicione uma entrada que defina o valor desse parâmetro como yes.

    X11Forwarding yes
  3. Instale os pacotes X11:
    dnf install xorg-x11-xauth xorg-x11-fonts-\* xorg-x11-utils dbus-x11
    Se você nunca tiver executado um aplicativo gráfico no servidor remoto, na primeira vez que se conectar ao servidor remoto usando o encaminhamento X11, uma mensagem de advertência será exibida:
    /usr/bin/xauth: file /home/user/.Xauthority does not exist

    Você pode ignorar esse aviso como o . O arquivo Xauthority é criado automaticamente.

  4. Reinicie o serviço sshd para que a alteração entre em vigor:
    sudo systemctl restart sshd.service

Inicie um aplicativo remotamente usando o encaminhamento X11

  1. Faça log-in no servidor remoto usando SSH:
    ssh -X <user>@<server1.example.com>
    
    The authenticity of host 'remote-server (192.168.122.120)' can't be established.
    ECDSA key fingerprint is SHA256:uYwFlgtP/2YABMHKv5BtN7nHK9SHRL4hdYxAPJVK/kY.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
  2. Insira sim.
    Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
  3. Inicie um aplicativo gráfico no servidor remoto que é exibido no sistema local. Por exemplo, para executar um editor de texto gráfico como gedit, informe:
    gedit &
    A adição do & (e comercial) no final executa o aplicativo em segundo plano, liberando o terminal para outros comandos.