我目前已在家用电脑上设置了 HAProxy,并尝试通过 HTTP 代理访问它。目前,我正在访问 SSH 登录提示,如下所示:
openssl s_client->proxytunnel->HTTP(S) proxy->remote HAProxy->SSH server
我快要收到提示了,SSH-2.0-OpenSSH
但由于某种原因,它只是挂在提示处并且不会通过私钥。
这是我在客户端执行的命令以及如何设置代理隧道以使用组织的代理:
proxytunnel -p httpproxy.organization.com:8080 -d ssh.homeserver.com:443 -a 7000
openssl
接下来我将像这样运行:
openssl s_client -connect localhost:7000 -quiet -key /home/user/.ssh/id_rsa
但出于某种原因,证书似乎没有通过。我很可能漏掉了某个步骤,所以任何建议都将不胜感激!
答案1
您混淆了两个完全不同的协议的客户端。
该openssl s_client
工具纯粹是一个TLS(SSL)客户端;它能够剥离 HAproxy 或 stunnel 可能添加的 TLS 层。但是,一旦完成,它只会将任意数据从一端传输到另一端。您看到的提示是初始 SSH 握手,服务器希望您回复它;因此,您仍然需要运行一个这样的程序来ssh
与SSHTLS 隧道之上的协议。
通常ssh
直接通过 TCP 连接到服务器,但您可以使用选项ProxyCommand
告诉它通过另一个程序:
ssh -o ProxyCommand="openssl s_client -connect localhost:7000 -quiet" dummyname
如果您有 SSH 密钥对,您也需要将其指定为选项ssh
:
ssh -i ~/.ssh/id_workplace -o ProxyCommand.....
(但不需要这个~/.ssh/id_rsa
– 它是默认使用的。)
s_client 选项-cert
和-key
当然用于向 TLS 服务器进行身份验证。但是,它们需要完整的 X.509 证书作为“-cert”;只有公钥是不够的,因为它适用于 SSH。