我的问题基本上是如何将现有的两步变成一步。
我使用中间人服务器在两台计算机之间设置了一个工作 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