Acesso Remoto Usando SSH

Use conexões SSH para acessar com segurança recursos remotos, redes e aplicativos.

Acessar Serviços e Redes Remotamente Usando SSH

O encaminhamento de porta SSH, também conhecido como tunelamento SSH, transporta dados com segurança por uma conexão SSH criptografada entre um sistema local e remoto. Depois que um túnel SSH é estabelecido, o cliente SSH ouve 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 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 do servidor de banco de dados interno. Em seguida, você pode estabelecer conexão com o localhost e todo o tráfego será 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 colega desenvolvedor um aplicativo 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 ao desenvolvedor acesso.

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 o encaminhamento de porta TCP única e o 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 trás de um firewall ou podem não estar ouvindo 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 atender 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 o localhost.

  • destination_port

    Porta na máquina de destino.

  • user@remote_ssh_server

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

Por exemplo:

ssh -L 8080:localhost:8888 user@192.168.1.20

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

Encaminhamento de Porta Dinâmica

Use o encaminhamento de porta dinâmica para que o cliente SSH faça listening 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 por meio do 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 do 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 que você use uma conexão SSH para abrir um aplicativo gráfico baseado em X11 em um sistema remoto do Oracle Linux e usá-lo em um sistema local. O sistema remoto não precisa ter um servidor X11 ou um ambiente de desktop gráfico em execução, mas o sistema local deve ter um serviço compatível com X11 em execução.

Ative o encaminhamento de 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 o X11Forwarding no arquivo /etc/ssh/sshd_config.

    Se X11Forwarding for omitido do /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, pois o arquivo .Xauthority é criado automaticamente.

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

Abrir um aplicativo remotamente usando o encaminhamento X11

  1. Acesse o 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 yes.
    Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
  3. Abra um aplicativo gráfico no servidor remoto que é exibido no sistema local. Por exemplo, para executar o editor de texto gráfico gedit, informe:
    gedit &
    A adição do & (ampersand) executa o aplicativo em segundo plano, liberando o terminal para outros comandos.