ssh 非透明 jumphost

ssh 非透明 jumphost

这看起来很基本,但我无法找到完全令人满意的解决方案。

客户端 ssh ---> 服务器 A ssh ----> 服务器 B

当然这很容易做到,先登录A,然后登录B,输入命令就可以了。但我对服务器A有具体的要求:

  • 自动 ssh 到服务器 B(无密码登录已启用)
  • 当服务器 B 中的会话结束时,也自动从服务器 A 注销
  • 对会话进行日志记录(文本文件)。无需在此答案中介绍,因为对此有很多说明。
  • 简单地说,用户不应该被允许在服务器 A 上做任何事情,而是直接转到服务器 B。但是透明隧道或 jumphost 不是一种选择,因为需要记录会话。

答案1

只需这样做即可创建跳转主机,而无需登录两次。

在 sshd_config 中向 serverA 添加以下内容:

allowgroups users  
Match group users  
   ForceCommand ssh_forcecommand.sh  

ssh_force命令

if [ -z "$SSH_ORIGINAL_COMMAND" ]; then  
  echo "usage ..."  
else  
  ssh $SSH_ORIGINAL_COMMAND  
fi  

在我的例子中,我使用主机(您的服务器 A)后面的参数作为目标主机(您的服务器 B)。如果您在主机后面放置任何内容(即命令),Linux ssh 客户端将不会请求终端。您必须在客户端上使用 -t 选项来强制分配终端。

ssh -t 服务器A 服务器B ---> 服务器A ---> 服务器B

相关内容