客户端

客户端

最近,我接到一个任务,需要根据特定用户的公共 IP 地址将传入连接重新路由到该用户......

例如,假设 Bob 运行:

ssh nerd@server_ip

我怎样才能重新路由他(本例中为 123.123.123.123),以便nerd他以 身份登录,而不是 身份登录admin

我尝试过的方法

我尝试了不同的配置和组合MatchAddress...我也尝试过在 SSH 中MatchUser使用脚本...ForceCommand

更多说明

为了进一步说明,我想将上例中的 Bob 重新路由到用户“admin”,因为他的 IP 地址是 (123.123.123.123)。但如果另一个人,比如说 Julia 要运行ssh nerd@server_ip,它会将她重新路由到,non-admin@server_ip因为她的 IP 是 (1.1.1.1)...

答案1

客户端

我不认为这可以作为 ssh 服务器配置的一部分来实现。“Match”选项不允许使用“User”指令来强制使用与请求不同的用户帐户。

但是你可以给 Bob 和 Julia 一些建议,告诉他们如何在自己的文件中进行配置~/.ssh/config。例如,告诉 Bob 将以下内容添加到此文件:

Host server_ip
    User admin

朱莉娅还应该补充一点:

Host server_ip
    User non-admin

现在,如果他们在客户端主机 123.123.123.123 或 1.1.1.1 上添加此配置,这将使他们能够运行

ssh server_ip

并且 ssh 客户端将使用管理员或非管理员作为连接的用户部分,具体取决于执行它的客户端。

这肯定不是您所要求的,但我想使用 ssh 可以获得最接近的结果。

使用 authorized_keys

根据 Bob 和 Julia 需要在服务器上执行的操作,您还可以让他们使用公钥进行身份验证,并将给定的命令硬编码到 authorized_keys 文件中。这样做的好处是,在 authorized_keys 文件中,您可以要求特定的“发件人”地址并强制执行特定的命令。请参阅 sshd(8) 手册页中的“AUTHORIZED_KEYS 文件格式”部分。不过,这只允许您限制从特定地址使用特定公钥,它不会像您最初要求的那样将连接重新路由到另一个帐户。

相关内容