我如何让从未与我的本地机器连接过的远程服务器通过 SSH 与我连接?

我如何让从未与我的本地机器连接过的远程服务器通过 SSH 与我连接?

我使用的是旧服务器,尚未更新且无法更新。

操作系统是 FreeBSD,没有 Python,显然是 Ansible,也没有 sshpass。

我使用 Ansible 和 ssh 从我的个人计算机访问这台旧服务器。它们两者(我的计算机和旧服务器都通过 VPN 进行通信)。

旧服务器位于具有不同(许多)客户端的网络中,我想要使用 SCP 向这些客户端发送文件。

没有 DNS(我确实无法创建一个)。

我知道我无法直接访问客户端(我真的不能),所以我必须在旧服务器和客户端之间建立 ssh 连接(我真的必须这样做)。完成后,我将能够使用我计算机上的 Ansible playbooks 让旧服务器使用 shell 脚本向其客户端发送文件。

不幸的是,ssh-copy-id 和 ssh @ 无法自动工作。如果手动操作,系统会提示我输入指纹问题,然后手动输入“是”并进行验证。

或者我会被要求输入用户密码。

我想避免这种情况。

我有一个想法,如果有一个类似 ping 的 Linux 命令可以告诉客户端:“嘿!我知道你的 IP 地址。请使用‘ssh old_server_user@old_server_IP’与我建立连接,不用担心,无论你是谁,无论你长得像谁,无论你的签名是什么,我都会同意!”

是否可以?

答案1

您是否尝试过让 ansible 使用旧的 freebsd 主机作为其跳转服务器?

类似这个https://blog.ruanbekker.com/blog/2020/10/26/use-a-ssh-jump-host-with-ansible/

答案2

你有没有尝试过本地端口转发是否可以 ssh 到旧服务器?

ssh -L 2222:REMOTE_CLIENT_IP:22 USER@OLD_SERVER_IP

这告诉 ssh 将任何到本地主机 2222 端口的连接隧道传输到旧服务器旧服务器将该连接转发到远程客户端 IP并将答复返回给您。

什么是 SSH 隧道?

然后你就可以 ssh 到远程客户端使用此命令:

ssh -p 2222 REMOTE_CLIENT_USER@localhost

另外,看看通过多跳的 SSH 隧道

相关内容