我想要一个服务器来透明地将传入的 ssh 连接从客户端转发到 docker 容器。这应该包括 scp、git 传输等。这必须使用 key ,密码已停用。用户不应看到服务器。 更新:是的,这确实意味着用户应该不知道有一个服务器。配置必须完全在服务器上进行!

client -----> server -----> container  (actual connection) 
client -------------------> container  (what the user should see) 

所以,给出的是:

user@client$ ssh user@server 
user@server$ ssh -p 42 user@localhost 
user@container$  

但我想要的是:

user@client$ ssh user@server 
user@container$  

我尝试在 authorized_keys 文件中使用 command="ssh -p 42 user@localhost" 语法,这有点管用,只是在第二个 ssh 连接中用户必须输入密码,因为身份验证未通过(服务器 没有用户 的私钥)。 此外,即使输入密码,这种方法也不适用于 scp

我也听说过 tunnel= 命令,但我不知道如何设置它(联机帮助页也没什么帮助)。

我在 Arch 上使用 OpenSSH 7.5p1。

请您参考如下方法:

将其放入您的 ~/.ssh/config 文件中:

Host server-container 
  ProxyCommand ssh server -W localhost:42 

然后简单地做:

ssh server-container 

只要您的用户名一致。如果没有,您可以将它们指定为:

Host server-container 
  ProxyCommand ssh server-user@server -W localhost:42 

然后简单地做:

ssh container-user@server-container 

作为奖励,您可以避免使用 ssh 使用 docker exec 进入容器。像这样:

ssh -t server docker exec -it <container-id> bash 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!