Encaminhamento SSH local ou VPN completa para uma tela de Mac?
Para uma tela em um único host, um encaminhamento SSH em loopback é menor que uma VPN. Aqui está quando ele basta, o que cifra e quando parar de usá-lo.
Você precisa ver a tela de um Mac a partir da sua própria máquina, o Mac fica atrás de um host ao qual você já consegue chegar por SSH, e a pergunta é se isso merece uma VPN. Normalmente não. Um único encaminhamento local transporta uma porta TCP pela sessão SSH que você já tem, e para uma tela em um único host isso é um arranjo menor e mais auditável do que rotear uma rede inteira.
Três condições decidem, e qualquer uma delas pode empurrá-lo para a VPN gerenciada.
Três condições decidem
A primeira é o escopo: um serviço em um único host, ou vários hosts e várias portas. A segunda é se cada salto entre o bastião e o destino já é confiável, porque o SSH protege apenas o segmento que ele termina. A terceira é quem precisa sustentar o arranjo depois que você o construir, já que um túnel feito à mão costuma sobreviver à pessoa que o entendeu. Nomeie essa pessoa antes de começar, e escreva o comando em um lugar onde ela possa encontrá-lo. Um encaminhamento sem documentação é um incidente futuro com data de início adiada.
Se as respostas são «um», «sim» e «eu, por enquanto», o encaminhamento é a ferramenta certa. Se qualquer resposta mudar, um desenho de acesso remoto com suporte sai mais barato ao longo de um ano do que a revisão do incidente que segue a um túnel sem documentação.
Encaminhe uma porta, não a rede
Um encaminhamento local abre um ouvinte na sua máquina e retransmite cada conexão pelo servidor SSH até um destino que esse servidor alcance. Para um Mac cujo serviço de compartilhamento de tela escuta na TCP 5900, e um bastião que consegue resolver mac.corp.example, o comando é curto e deliberadamente estreito. Cada opção nele existe para manter o arranjo pequeno: sem shell, sem ouvinte em todas as interfaces, sem daemon. Leia-o como uma declaração de escopo, não como uma receita.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:15900:mac.corp.example:5900 [email protected]Ligar o ouvinte a 127.0.0.1 o mantém longe de qualquer outra interface. Isso não é formalidade: um encaminhamento ligado a todas as interfaces transforma seu notebook em um relé aberto para a rede corporativa para qualquer pessoa no mesmo Wi-Fi do café. Se a porta já estiver em uso, escolha outra porta alta e atualize o visualizador; não pare um serviço não relacionado para o exemplo caber.
A conta no bastião também precisa de permissão para encaminhar para esse destino. Algumas configurações de SSH endurecidas desativam o encaminhamento de portas por completo, e outras o restringem com uma diretiva permit-listen ou permit-open. Leia a política do servidor antes de supor que um canal recusado significa que a senha estava errada.
O que o SSH cifra, e onde ele para
A sessão SSH protege o tráfego do seu Mac até o bastião, e o encaminhamento carrega o protocolo VNC dentro dessa sessão sem entendê-lo. Assim que a conexão deixa o bastião em direção ao destino, ela não está mais dentro da sua sessão SSH. Qualquer proteção que exista nesse último salto pertence ao protocolo de destino e aos controles da própria rede privada.
Por isso um último salto VNC simples não deve ser descrito como cifrado de ponta a ponta só porque o primeiro salto usou SSH. Descreva os segmentos com honestidade: forte do cliente até o bastião, e o que o destino suportar depois disso. Se o requisito é que todo o caminho seja cifrado por um único mecanismo, o encaminhamento não o cumpre.
A autenticação no destino é outra coisa, de novo. A conta SSH não concede um login no macOS, e o serviço de compartilhamento de tela ainda pede as próprias credenciais e ainda aplica a própria lista de acesso. Um ouvinte local que aceita uma conexão não prova nada sobre se o serviço remoto admitirá a sessão.
Quando a VPN completa é a escolha certa
Escolha a VPN quando a tarefa precisa de mais de uma porta: as funções de gestão e relatório do Apple Remote Desktop usam tráfego TCP e UDP adicional que um único encaminhamento TCP não carrega. Um encaminhamento não é uma implementação parcial do produto inteiro; é uma ferramenta diferente e menor.
Escolha-a quando vários administradores se conectam de locais variáveis, porque um perfil gerenciado distribui rotas, credenciais e política sem que cada pessoa invente uma linha de comando. Escolha-a quando a trilha de auditoria precisa mostrar quem se conectou a quê, já que uma sessão SSH por usuário e um encaminhamento local compartilhado deixam registros muito diferentes.
Escolha-a, por fim, quando a rede de destino não deve ser alcançável de um notebook sem o portão da própria organização. Um encaminhamento pessoal contorna esse portão por design, e é exatamente por isso que ele pertence a um registro de mudanças e não a um histórico de shell.
Faça o encaminhamento falhar ruidosamente
Use ExitOnForwardFailure=yes para que uma ligação falha pare a sessão em vez de deixar um shell que parece conectado e não encaminha nada. Mantenha a verificação de chave de host ligada, e prefira uma chave ou agente a uma senha. Depois teste a URL exata que o visualizador usará, porque uma sessão SSH funcionando e uma conexão de tela funcionando são dois resultados diferentes.
Para o cliente nativo no macOS, chega-se ao visualizador por uma URL local: open "vnc://127.0.0.1:15900". Se a janela abrir e o host remoto recusar a autenticação, o túnel está bem e o problema está no destino. Se a janela nunca abrir, o problema é o ouvinte ou a porta.
Pare a sessão quando terminar, e anote a porta, o bastião, o destino e a política da conta. Um encaminhamento que ninguém documentou é indistinguível de uma porta dos fundos seis meses depois, e esse é o argumento mais forte para mantê-lo pequeno, nomeado e temporário.