linux - 通过代理服务器自动进行 SSH 连接

标签 linux bash ssh

我正在尝试编写一个非常简单的 bash 脚本,因此我可以先通过 ssh 连接到代理服务器,然后从代理服务器通过 ssh 连接到目标服务器。这就是网络被访问的方式。我有:

#! /bin/bash
ssh  proxyservername
ssh  destservername

这是行不通的。当我连接到proxyserver时,ssh的第二行并没有执行,我还是需要手动输入命令。是否有一些命令可以添加到脚本中,以便我可以自动连接到目标服务器? (我可以接受提示输入密码。)

最佳答案

我认为在类似情况下最常见的解决方案是使用 -R ssh的标志(检查 man ssh )。您可能还想阅读有关 -f 的内容和 -o ExitOnForwardFailure=yes .

我使用的模式是这样的:

ssh -f -o ExitOnForwardFailure=yes -R localhost:2222:$TARGETNAME:22 $PROXYNAME sleep 1 &&
ssh -p 2222 localhost

(其中 2222 基本上是您可以在本地计算机上使用的任何端口)。

-R标志告诉 ssh连接到 $PROXYNAME , 建立一条从那里到端口 22 的隧道的 $TARGETNAME并将其另一端连接到端口 2222在你的本地机器上。其他选项告诉ssh转到后台并在不再使用时关闭此连接。然后你就开始另一个ssh连接到端口的实例 2222localhost .

关于linux - 通过代理服务器自动进行 SSH 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29423414/

相关文章:

linux - ssh 进入虚拟机时,未通过脚本正确设置环境变量

linux - fs.lstat() Enoent 错误的可能原因是什么?

java - maven-compiler-plugin 参数字符串超出 OS X 终端限制

linux - 从 bash 脚本终止 ssh 或\和远程进程

php - 如何使用 Docker 连接 php-apache 和 MySQL?

bash - env 在 Bash 中究竟做了什么?

ssh - 对不存在文件上的 SFTP "open"的正确响应

python - 检查字典中的双键

c++ - 如何使用 FLTK 在 Windows、Mac OS X 和 Linux 中使窗口透明?

c++ - C++ Linux 中的线程无限期等待