这里的情况是:用户运行“ssh -i sshkey user @ server1”。 我希望SSH连接通过server1隧道到server2。 通常情况下,用户可以自己使用
ssh -i sshkey user@server1 -o 'ProxyCommand /bin/nc server2 22'
不过,我不希望用户自己设置代理,使用ssh命令行参数甚至ssh_config更改。 作为系统pipe理员,我希望能够透明地将用户的SSH会话redirect到不同的服务器。 到目前为止,我发现的所有解决scheme都需要ProxyCommand。 有没有办法让我做到这一点?
请注意,用户正在使用SSH密钥,而不是用户名/密码,因此这些凭据需要传递给server2。
我可以想到两种方法来做到这一点:
server1上用户的AuthorizedKeysFile (即~/.ssh/authorzied_keys )中的强制命令 :
条目看起来像
command="ssh server2" ssh-rsa AAAA...[rest of sshkey.pub]
然后,命令ssh -i sshkey server1将直接将用户发送到server2。
或者,通过将其设置为/bin/proxyshell类的方式更改 server1上的用户的shell ,其内容将为:
#!/bin/bash ssh server2
我怀疑这个问题对使用SSH的ProxyCommand有误解。
ProxyCommand不能用于通过server1连接到server2,而是通过给定的命令(可能涉及server2,例如作为代理)连接到server1。 这个命令将需要以自己的方式validation到server2(请参阅,例如, https : //stackoverflow.com/questions/1040089/how-do-i-use-github-through-harsh-proxies各种选项进行身份validation网页代理)。
如果ProxyCommand成功连接到server1,则用户将以通常的方式进行身份validation。