通过中间人服务器的 SSH 隧道 - 如何一步连接(使用密钥对)?

通过中间人服务器的 SSH 隧道 - 如何一步连接(使用密钥对)?

我的问题基本上是如何将现有的两步变成一步。

我使用中间人服务器在两台计算机之间设置了一个工作 SSH 隧道,如下所示:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

我目前所做的是从 Kubuntu_laptop 到 Debian_Server 的 SSH,然后从 Debian_Server 到 Kubuntu_desktop。我想在我的 Kubuntu_laptop 上以 bash 发出一个 SSH 命令,从而使我连接到 Kubuntu_desktop (shell/bash)。

我现在使用的命令如下。步骤1:

me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server  

第2步:

admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 

然后我通过 SSH 连接到 kubuntu_desktop(来自 kubuntu_laptop)。

所有 SSH 连接都需要 RSA 密钥。密码登录完全被禁用。请注意,其中两台计算机的计算机用户帐户不同。

关于该腿的连接:

Debian_Server<--nat_fw<--Kubuntu_desktop

它的建立方式如下:

autossh -M 5234 -N -f -R 1234:localhost:22 [email protected] -p 22

注意 Kubuntu_desktop 连接到中间人为[电子邮件受保护](不是 admin@debian_server)。但是当我连接到 Kubuntu_desktop 时,我以管理员用户身份连接。

我无法更改现有的监控端口 (5234) 或远程 (-R) 端口号(本例中为 1234)。我无法更改 SSH 安全性以允许密码登录。我无法打开任何新的防火墙端口。我无法更改用户帐户(笔记本电脑除外)。

答案1

确保 Debian 服务器上安装了 netcat,并ProxyCommand在本地 SSH 配置中使用 ( ~/.ssh/config)。

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234

答案2

感谢@Ignacio Vazquez-Abrams,这里是所有步骤:

确保 Debian 服务器上安装了 netcat,并在本地 SSH 配置 (~/.ssh/config) 中使用 ProxyCommand。

我编辑配置如下:

me@kubuntu_laptop:~/.ssh$ nano config

内容是:

Host kubuntu_desktop
  ProxyCommand ssh debian_server_fqdn nc localhost 1234
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

然后只需连接:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

一步通过 SSH 连接到 kubuntu_desktop!完美的

更新:

这使得它更加灵活:

me@kubuntu_laptop:~/.ssh$ nano config

新内容是:

Host family_desktops
  ProxyCommand ssh debian_server_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

然后连接到妈妈:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

并连接到爸爸:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

当然,妈妈和爸爸必须设置第 0 步(来自我最初的问题),其中每个人都定义了自己的 -R 端口。以爸爸为例:

第 0 步(对于爸爸):

autossh -M 6543 -N -f -R 5678:localhost:22 [email protected] -p 22

选修的:

DAD=5678
ssh family_desktops -p $DAD

相关内容