我有两个困难。
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/