通过跳转服务器进行ssh转发

通过跳转服务器进行ssh转发

完全免责声明:我来自数据世界,对 Unix 和网络的经验有限。

  • 我在 Linux 5.15.36 上运行 Mysql (比如服务器A),并且我配置了一个运行Linux 5.10.102的跳转服务器(服务器B)。
  • 服务器B服务器A,我可以通过 SSH 连接。
  • 然后我有一个在无服务器环境中运行的 SQL 客户端(为简单起见,我们将其称为服务器C) 那无法使用 SSH用于身份验证。它使用SQL协议进行连接和验证,即用户/密码、端口、服务器地址。

考虑到我描述的约束,是否可以通过跳转服务器以某种方式配置隧道,以便 SQL 客户端服务器C将连接到运行的 mySQL 数据库服务器A

答案1

错误答案:

From what you decscribe, the following setup should satisfy your needs:

 1. Configure a ssh ProxyJump to Server A via Server B
 2. Open a tunnel to Server A via Server B forwarding localhost:3306 to Server_A:3306

The configuration for the tunnel would be specified in `~/.ssh/config` like this:


```
Host ServerA
 HostName FQDN.SERVER-A
 # your user and ssh key for ssh to server A
 User <the user>
 IdentityFile <users ssh key>
 # Be sure `user` can ssh to server B from server C
 ProxyJump [email protected]
 LocalForward localhost:3306 localhost:3306

```

Then open the tunnel from ServerC with

```
ssh -N -f ServerA
```

and then try the `mysql-client` on ServerC.

If you have problems, first try `ssh ServerA` after killing the backgrounded ssh above, and see if that works.

希望正确的答案:

  1. 在服务器B上创建转发配置。
  2. 使用 a 在 ServerA 和 ServerB 上创建用户,并在 ServerA 上ssh keypair输入公共 ssh 密钥。.ssh/authorized_keysssh-copyid ..
  3. 从 ServerA 从 ServerB 登录一次,以创建主机密钥条目或禁用主机密钥检查(见下文)。
  4. 打开从服务器 B 到服务器 A 的隧道。
  5. 通过 MySql 从服务器 C 连接到服务器 B。

1.) ServerB 上的转发配置(这里是作为用户配置完成的。也可以通过 ssh 服务器配置来完成,但到目前为止我没有使用它)/home/sshuser/.ssh/config是:

Host ServerA
 HostName FQDN.SERVER-A
 # your user and ssh key for ssh to server A
 User <the user>
 IdentityFile <users ssh key>
 LocalForward LAN-IP-SERVER-B:3306 LAN-IP-SERVER-A:3306
 # disable host key checking
 # StrictHostKeyChecking no

2.) 在 ServerB 上创建 ssh 登录用户和 ssh 密钥对,在 ServerA 上创建用户,然后将 ssh 公钥复制到 ServerA:

root@ServerA $>useradd sshuser
root@ServerA $>passwd sshuser
....
root@ServerB $>useradd sshuser
root@ServerB $>sudo -i sshuser
sshuser@ServerB $>ssh-keygen -t rsa -b 2048
sshuser@ServerB $>ssh-copyid sshuser@ServerA
...

3.) 从 ServerB 登录到 ServerA,如果严格的主机密钥检查已启用:

sshuser@ServerB $> ssh sshuser@ServerA

4.) 打开从 ServerB 到 ServerA 的隧道

sshuser@serverB: $> ssh -N -f ServerA

5.) 然后使用服务器 C 上的 MySQL 客户端连接到:

mysql://mysluser-on-server-a:password@ServerB:3306

您将连接到ServerA 的凭据到服务器 B 并通过 ssh 隧道自动转发到服务器 A。

下一步是自动设置从 ServerB 到 ServerA 的隧道,这样您就不必按照步骤 2 中所述手动执行此操作。

注意事项:您可能需要调整 MySql ServerA 上的登录权限以允许用户使用某些远程主机。

相关内容