O comando para encaminhar a porta 80 da sua máquina local ( localhost
) para o host remoto na porta 8000 é:
ssh -R 8000:localhost:80 oli@remote-machine
Isso requer um ajuste adicional no servidor SSH, adicione as linhas a /etc/ssh/sshd_config
:
Match User oli
GatewayPorts yes
Em seguida, recarregue a configuração executando o servidor sudo reload ssh
.
A configuração GatewayPorts yes
faz com que o SSH ligue a porta 8000 no endereço curinga, para que fique disponível para o endereço público de remote-machine
( remote-machine:8000
).
Se você precisar ter a opção de não vincular tudo no endereço curinga, mude GatewayPorts yes
para GatewayPorts clientspecified
. Como ssh
vincula ao endereço de loopback por padrão, é necessário especificar um vazio bind_address
para vincular o endereço curinga:
ssh -R :8000:localhost:80 oli@remote-machine
O :
antes 8000
é obrigatório se GatewayPorts
estiver definido como clientspecified
e você desejar permitir acesso público remote-machine:8000
.
Trechos manuais relevantes:
ssh (1)
-R [bind_address:] port: host: hostport
Especifica que a porta especificada no host remoto (servidor) deve ser encaminhada para o host especificado e a porta no lado local. Isso funciona alocando um soquete para escutar a porta no lado remoto, e sempre que uma conexão é feita a essa porta, a conexão é encaminhada pelo canal seguro e uma conexão é feita para hospedar o hostport da porta da máquina local. Por padrão, o soquete de escuta no servidor será vinculado apenas à interface de loopback. Isso pode ser substituído, especificando um endereço de ligação. Um endereço bind_ vazio, ou o endereço '*', indica que o soquete remoto deve escutar em todas as interfaces. A especificação de um endereço bind_ad remoto somente será bem-sucedida se a opção GatewayPorts do servidor estiver ativada (consulte sshd_config (5)).
sshd_config (5)
GatewayPorts
Especifica se os hosts remotos têm permissão para se conectar às portas encaminhadas para o cliente. GatewayPorts pode ser usado para especificar que o sshd deve permitir o encaminhamento de portas remotas para se vincular a endereços sem loopback, permitindo assim que outros hosts se conectem. O argumento pode ser 'não' para forçar o encaminhamento de porta remota a estar disponível apenas para o host local, 'yes' para forçar o encaminhamento de porta remota para vincular ao endereço curinga ou 'clientspecified' para permitir que o cliente selecione o endereço ao qual o encaminhamento é vinculado. O padrão é 'não'.
Veja também:
GatewayPorts
foi a bala mágica aqui. Gosto que você tenha encontrado uma versão que me permita limitar essa técnica bastante poderosa a determinados usuários.