Eu consegui fazer isso mesmo sem um servidor HTTP (em um sentido estrito):
tudo que eu usei foi node.js em ambos os lados do cliente (um cliente ssh um servidor ssh) bem como o Firebase para armazenar buffers (convertidos em cadeias de caracteres) lidos do fluxo TCP, e sob a instrução geral da resposta do @ Putnik comentários, (tendo em mente o uso da opção allowHalfOpen
), o programa funciona com pouco atraso. Graficamente, a conexão é assim:
client1 (cliente ssh) < = > localhost1 (tcp, servidor falso-ssh)
client2 (servidor ssh) < = > localhost2 (cliente tcp, falso-ssh)
localhost1 < = > firebase (ou um servidor HTTP real) < = > localhost2
Por favor, note que de localhosts para firebase / server, um pode codificar / decodificar os buffers no entanto um quer - desde que sejam um par de conversões sem perdas. Portanto, o link para a outra pergunta na resposta do @RedGrittyBrick (usando HTTP CONNECT
) também deve funcionar, desde que haja privilégio suficiente nesse servidor e, potencialmente, possa ser mais rápido.
Existem muitas coisas no código que podem ser melhoradas, mas acredito que, em termos de segurança, isso não deve ser menos seguro do que a conexão direta usando o openSSH. Por favor, corrija-me se estiver errado.