linux - 我可以使用本地脚本通过 SSH 连接到多个服务器(从本地到 servA,然后从 servA 到 servB)吗?

标签 linux bash ssh remote-server

<分区>

我有两个困难。

Q1。

我从本地终端使用 ssh userA@servA 登录“servA”,然后从“servA”使用 ssh userB@servB 和 cd 登录“servB”进入我在“servB”上的工作目录并执行“programA”(无法从本地连接 servB)。每次我需要手动执行此过程并输入我的密码两次(一次用于 servA,一次用于 servB)。

我可以通过在本地终端运行 bash 脚本来完成上述过程吗?

Q2.

我想将数据从本地复制到 servB,反之亦然。目前,我使用 scp 将数据从本地复制到 servA,然后从 servA 复制到 servB。有没有直接在本地和servB之间传输数据的解决方案?

最佳答案

最简单的方法是使用 ssh 连接到 servA 来设置隧道:

ssh -L50022:servB:22 user@servA

然后您可以通过访问 localhost:50022 连接到 servB 上的 ssh 守护程序,对话被转发或“隧道”到 servB:

ssh -p 50022 user@localhost

scp -P 50022 /some/local/file user@localhost:/home/user/

您可以通过将其放入脚本中来实现自动化。但是你必须注意第一个调用(设置隧道)不会阻塞脚本:

ssh -T -L50022:servB:22 user@servA &
scp -P 50022 /some/local/file user@localhost:/home/user/

关于linux - 我可以使用本地脚本通过 SSH 连接到多个服务器(从本地到 servA,然后从 servA 到 servB)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368568/

相关文章:

带条件的 Linux awk

bash - 为什么在docker-machine VM中创建文件会导致权限被拒绝?

linux - 配置 QEMU(Guest Debian-9.0 Sparc64 - Host MacOS High Sierra)从 guest 到主机执行 ssh

linux - 如何在 Linux 中通过控制台输出启动 Tomcat?

linux - shell - 显示 agrep 中最佳匹配的错误数

SVN Post Commit Hook 部署网站

bash - 为什么 `ack` 像这样与 `bash` 一起使用时不产生输出?

ssh - 使用 SSH 隧道转发访问防火墙后的网站

xcode - 如何在不授予命令行访问权限的情况下授予 friend 访问 git 存储库的权限?

linux - hadoop 配置 : couldn load or find main class org. apache.hadoop