自动执行创建 ssh 隧道的脚本

自动执行创建 ssh 隧道的脚本

我是一名计算机科学专业的学生,​​仍然在学习很多东西,所以如果我不能完全理解我在这里尝试的内容,请耐心等待。

我在 Mac 上,连接到 Linux 机器。我可以通过执行以下脚本行来设置 ssh 隧道并连接到远程机器:

ssh -f -L 2222:<remote_machine>:22 <user>@<remote_server> sleep 10; ssh -p 2222 <user>@localhost 

我想要做的是以某种方式自动执行此行。现在,我必须将其复制并粘贴到终端中。我已经设置了密钥对,因此不必输入密码,但我得到了终端类型的提示。这是我想消除的两个步骤,因此我可以打开终端并运行一个消除这两个步骤的脚本。

我不知道该如何响应“终端类型”提示或自动响应它。我尝试过 Expect 类和 Python 的 pexpect 模块,但没有成功(似乎 expect 脚本可以处理终端部分,但在创建隧道和不丢失对后台进程的引用方面遇到了麻烦)。

我有一个可以做我想做的事情的 applescript,但想要一个更便携的解决方案。任何关于去哪里找的建议都很好!

答案1

您可以将此命令放在以下列内容开头的普通文本文件中

#!/bin/bash
ssh -f -L 2222:<remote_machine>:22 <user>@<remote_server> sleep 10; ssh -p 2222 <user>@localhost 

然后将其标记为可执行文件,它应该通过双击启动

有关 OS-X 上的 Shell 脚本的更多信息,请参阅此处

http://www.noendpress.com/vroman/shellscripting/

答案2

最简单的方法是为该命令创建一个别名。将以下行添加到您的$HOMe/.bashrc文件中:

alias tunnel='ssh -f -L 2222:<remote_machine>:22 <user>@<remote_server> sleep 10; ssh -p 2222 user@localhost'

然后,您将能够通过运行以下命令从普通终端启动隧道:

tunnel

相关内容