Python - 在彼此内部(内部)打开多个 SSH
这是我想要做的:
- SSH到服务器1
- 内的服务器1,SSH到
- 服务器2内的服务器2,SSH到服务器3
- 内的服务器3,在mysql控制台内运行单个命令(如mysql)
- ,运行另一个命令。
- 然后一路退出到服务器 1
是否可以执行这样的过程?如果是,那么如何?
Here is what I want to do :
- SSH to server 1
- inside server 1, SSH to server 2
- inside server 2, SSH to server 3
- inside server 3, run a single command ( like mysql )
- inside mysql console, run another command.
- then exit all the way to server 1
Is it possible to do a procedure like this ? If yes, then how ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是可能的:只需在每个新跃点上执行 ssh(或您先上传的相应 Python 程序),当最终到达目标时,执行 mysql< /代码>。
但是,这不是可取的:您永远不应该在一台服务器上输入另一台服务器的密码(或更糟糕的是,将私钥存储在另一台服务器上)。这意味着如果服务器 1 受到损害,您的整个网络都会受到损害。
相反,使用前两个 ssh 会话来创建到下一跃点的隧道,或者使用命令行
ssh
的-L
选项(您可能无论如何都需要使用它) ,见上文),或使用 paramiko。It is possible: Just execute
ssh
(or a corresponding Python program you upload first) on each new hop, and when you finally reach the target, executemysql
.However, it's not advisable: You should never enter passwords (or worse, store private keys) for one server on another server. That means that if server 1 is ever compromised, your whole network is compromised.
Instead, use the first two ssh sessions to create tunnels to the next hop, either with the
-L
option of the command-linessh
(which you probably need to use anyways, see above), or with paramiko.