A menos que eu tenha entendido mal o que você precisa fazer, é bem simples conseguir o que você quer, se você controla B e pode configurar o daemon SSH em B para escutar na porta 443 ao invés da porta padrão 22 e configurar qualquer firewall software em B para permitir a conectividade de entrada para a porta 443, desde que qualquer tráfego para a porta 443 seja permitido de saída da rede que você usa.
Se B for um sistema Linux, fazer com que ele escute na porta 443 para conexões SSH provavelmente exigirá uma pequena atualização para /etc/ssh/sshd_config
. Procure a linha abaixo no arquivo:
#Port 22
Remova o "#", que significa o que segue, caso contrário será tratado como um comentário, desde o início da linha. Altere "22" para "443" e reinicie o daemon SSH.
No sistema cliente, você usa a opção -L
para SSH, que resultará em conexões locais, ou seja, aquelas para o sistema a partir do qual você inicia as conexões SSH, sendo encaminhadas para uma porta em algum outro sistema do SSH. servidor ao qual você se conecta.
-L [bind_address:]port:host:hostport
Specifies that the given port on the local (client) host is to be
forwarded to the given host and port on the remote side. This
works by allocating a socket to listen to port on the local side,
optionally bound to the specified bind_address. Whenever a con‐
nection is made to this port, the connection is forwarded over
the secure channel, and a connection is made to host port
hostport from the remote machine. Port forwardings can also be
specified in the configuration file. IPv6 addresses can be spec‐
ified by enclosing the address in square brackets. Only the
superuser can forward privileged ports. By default, the local
port is bound in accordance with the GatewayPorts setting. How‐
ever, an explicit bind_address may be used to bind the connection
to a specific address. The bind_address of “localhost” indicates
that the listening port be bound for local use only, while an
empty address or ‘*’ indicates that the port should be available
from all interfaces.
Por exemplo, você poderia usar um comando como o abaixo para conectar-se à porta 443 via SSH na máquina B e fazer com que ele direcione o tráfego para a porta 2222 em seu sistema local para a porta 22 em A pela porta 443 em B.
ssh -p 443 -L 2222:1.2.3.4:22 [email protected]
O -p
significa "porta" e informa ao SSH que você precisa se conectar ao sistema de destino, que é B em 5.6.7.8 na porta 443, em vez da porta padrão de 443. O -L
diz ao SSH para crie uma porta de escuta local no sistema a partir do qual você está estabelecendo a conexão. Eu coloquei "2222" na linha de comando, mas o número é arbitrário; basta colocar algo maior que 1.024 e menor que 65.536. O -L 2222:1.2.3.4:22
também está instruindo o programa SSH no sistema a partir do qual você está estabelecendo a conexão SSH para B para encaminhar qualquer tráfego recebido na porta 2222 através do SSH tunnel foi estabelecido com B. E quando ele sai da outra extremidade do túnel, B o envia para A em 1.2.3.4 na porta 22. Então, da perspectiva de A, o SSH conexão a ele é originária de B.
Em seguida, no sistema a partir do qual você está estabelecendo a conexão, você precisa iniciar outra conexão SSH, mas desta vez para a porta 2222 em si. Você pode fazer isso da seguinte maneira:
ssh -p 2222 [email protected]
Agora, seu sistema se conecta à porta não padrão de 2222 no endereço localhost , isto é, 127.0.0.1. A primeira conexão SSH configurada tem o software cliente SSH escutando na porta 2222 para conexões e, em seguida, encaminhando o tráfego por meio de um túnel SSH para a porta 443 em B, onde é enviado para a porta 22 em A. Quando você inicia a conexão, a senha O prompt que você receberá, se você usar a autenticação por senha, será para a máquina A.
O firewall na rede da qual você originou a primeira conexão SSH vê apenas uma conexão de saída para a porta 443 em B. Mas dentro da conexão com a porta 443 em B há um túnel criptografado que está roteando todo o tráfego para a porta 2222 em seu Cliente SSH para a porta 22 em A.
Eu uso uma abordagem semelhante para transferir arquivos de / para um servidor SSH, A, que está em uma zona de rede restrita, onde a única conectividade SSH de entrada permitida deve vir através de um host de bastiões , B. Nota: se você também precisar executar transferências de arquivos usando cópia segura (SCP) , você precisa usar um" P "maiúsculo com SCP para especificar a porta, enquanto que com o ssh você deve usar um" p "minúsculo.
Se você não estiver usando um sistema Linux ou OS X como seu sistema SSH do cliente, poderá usar uma abordagem de encaminhamento de porta similar com o PuTTY ou outro software cliente SSH.