最近,我接到一个任务,需要根据特定用户的公共 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 文件格式”部分。不过,这只允许您限制从特定地址使用特定公钥,它不会像您最初要求的那样将连接重新路由到另一个帐户。