基于用户名的 SSH 代理

Ama*_*asu 3 ssh proxy

我正在尝试根据传入的用户名在两个 ssh 服务器之间进行多路复用,即

ssh user1@testserver 将转到一个 sshd 实例,而 user2@testserver 将转到另一个。

这能做到吗?

And*_*man 6

我认为你可以这样做ForceCommand,比如:

ForceCommand proxyscript
Run Code Online (Sandbox Code Playgroud)

在 /etc/sshd/sshd_config 中。这proxyscript将是一个自定义脚本,它可以通过 ssh 连接到下一个服务器应该是什么,具体取决于运行它的用户。该脚本将有足够的信息来执行此操作,因为根据 sshd_config 的手册页,它将在用户的登录 shell 下运行,因此例如 $USER 将可用。

如果您只有一小部分固定用户想要执行此操作,那么您可以在 sshd_config 中对其进行配置,例如

Match User user1
ForceCommand ssh user1@host1

Match User user2
ForceCommand ssh user2@host2
Run Code Online (Sandbox Code Playgroud)

但我不知道这是否会正确地将传入连接的标准输出/输入连接到新 ssh 命令的标准输入/输出。

  • 是否可以使用这种技术来代理 git 连接?我正在尝试,但我不知道如何使用公钥。 (2认同)