我有一个用例,可以在不知道远程主机凭据的情况下通过代理代理 ssh 请求。
client -> proxy -> remote
我正在尝试设置一个 ssh 隧道,客户端可以在其中连接到映射到远程的特定端口上的代理。我不想在遥控器上进行身份验证,而是希望遥控器来处理身份验证。
工作流程
- 代理创建一个 ssh 隧道,
proxy:9000 -> remote:22
- 客户端连接:
curl proxy_user@proxy -p 9000
- 使用代理帐户凭据完成身份验证,但连接到远程
一些背景知识,我希望在客户端不知道远程凭据信息的情况下从客户端访问远程,并且不使用密钥。
想法?也许还有另一种方法来解决这个问题?
抱歉,如果有任何困惑,为了澄清,想做这样的事情:
[代理] ssh -L 代理:9000:localhost:22 远程用户@远程
[客户端] ssh -p 9000 proxy_user@proxy
我希望客户端不知道远程的凭据。
答案1
您试图描述的内容非常令人困惑,但一般来说,这应该有效:
Proxy 创建 ssh 隧道,proxy:9000 -> remote:22
[proxy]$ ssh -g -L proxy:9000:localhost:22 remote
客户端连接:curl proxy_user@proxy -p 9000
客户端应该使用 进行连接
ssh
,不是吗?[client] ssh -p 9000 proxy
但第一步可以使用简单的端口转发来设置iptables
。第一次连接时通信已加密ssh
。