这看起来很基本,但我无法找到完全令人满意的解决方案。
客户端 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