首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动SSH隧道

自动SSH隧道
EN

Software Recommendation用户
提问于 2021-09-03 10:52:06
回答 1查看 459关注 0票数 2

我需要在这样的配置中连接到几个VNC服务器:

代码语言:javascript
复制
  +---------+
  |LOCALHOST|
  +----+----+
       |
       |VPN
       |
    +--v--+
    |HOST1|
    +--+--+
       |
       |NETWORK1
       |
+------v------+
|HOST2        |
|VNC 5901:5901|
+------+------+
       |
       |NETWORK2
       |
+------v------+
|HOST3        |
|VNC 5902:5901|
+-------------+
  • Localhost:我的笔记本电脑运行Windows
  • Host1:我通过SSH连接的一个Linux主机。此主机连接到与host2相同的网络。
  • Host2:这个Linux主机正在运行一个允许端口5901打开的VNC服务器。使用network1连接到host2,使用network2连接到host2。运行Linux。
  • Host3:这个Linux主机运行另一个VNC服务器,允许端口5901打开。使用host2连接到network2。运行Linux。

因此,为了连接到VNC服务器,我运行了一些SSH隧道,以重定向端口5901和5902中的通信量。

隧道的命令如下所示:

代码语言:javascript
复制
# Terminal 1
ssh user1@host1
ssh user2@host2
ssh -L 5902:127.0.0.1:5901 -C -N -l user3 host3 -vvv

# Terminal 2
ssh user1@host1 
ssh -L 5902:127.0.0.1:5902 -C -N -l user2 host2 -vvv

# Terminal 3
ssh user1@host1 
ssh -nNT -L 5901:host2:5901 user1@host1 -vvv

# Terminal 4
ssh -L 5902:127.0.0.1:5902 -C -N -l user1 host1 -vvv

# Terminal 5
ssh -nNT -L 5901:host1:5901 user1@host1 -vvv

(有点杂乱无章的命令,但是它们能工作)

在每个终端中,这都会提示一条消息来键入用户的密码,并会一直运行一个进程,直到进程中止或发生连接超时。

所以这很好,我可以使用localhost:5901和localhost:5902从我的笔记本电脑连接到VNC服务器。

问题是,我必须输入很多这样的命令,一次又一次输入相同的密码,打开几个每天打开几次的终端(因为连接超时),而且它很快就老了。

所以我想知道这是否可以被自动化,要求任何脚本或程序都可以深入到几个运行命令的主机中,其中一些命令提示需要输入的密码,并且这个过程中的一些会一直运行直到Ctrl+C被按下。

我要求程序或bash命令的名称,这些程序或bash命令可以用于自动化这类场景,这样我就可以研究解决方案了。谢谢。

EN

回答 1

Software Recommendation用户

回答已采纳

发布于 2021-09-03 19:19:40

使用基于GUI的应用程序,您可以使用

猫允许您定义连接配置文件,并允许您将配置文件链接为跳转配置文件。

因此,在为HOST1定义连接之后,您可以将HOST2与HOST1定义为跳转主机,将HOST3与HOST2定义为跳转主机。

对于命令行,您可以继续使用SSH,只需在~/.ssh/config文件中配置隧道和C1主机,下面是一个示例:

代码语言:javascript
复制
Host _host1
  Hostname host.fqdn
  User username1
  Port 22

Host _host2
  Hostname host2.fqdn
  User username2
  ProxyJump _host1
  LocalForward 5091 localhost:5091

Host _host3
  Hostname host3.fqdn
  User username3
  ProxyJump _host2
  LocalForward 5092 localhost:5091

然后从命令行运行:

代码语言:javascript
复制
ssh _host3
票数 1
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/80433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档