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:
- Encaminhamento de Porta Local encaminha uma porta do cliente para o servidor SSH e, em seguida, para a porta de destino.
- Dynamic Port Forwarding cria um servidor proxy SOCKS para comunicações em uma faixa de portas.
- Reverter Encaminhamento de Porta encaminha uma porta do servidor para o cliente e, em seguida, para a porta de destino.
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:
- Em uma linha de comando, usando privilégios administrativos, estabeleça conexão com a instância usando SSH.
- 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
- Em uma linha de comando, usando privilégios administrativos, estabeleça conexão com a instância usando SSH.
- 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 comoyes
.X11Forwarding yes
- 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.
- 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
- 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])?
- Insira sim.
Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
- 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:A adição dogedit &
&
(e comercial) no final executa o aplicativo em segundo plano, liberando o terminal para outros comandos.