用于从该框中通过 SSH 连接到 jumphost 和 sftp 的 Python 脚本

Posted

技术标签:

【中文标题】用于从该框中通过 SSH 连接到 jumphost 和 sftp 的 Python 脚本【英文标题】:Python script to SSH into a jumphost and sftp from within that box 【发布时间】:2021-09-28 12:31:57 【问题描述】:

我目前正在尝试编写一个气流作业,该作业将允许我通过 ssh 进入 EC2 实例,然后从此 EC2 框中与另一台主机启动 sftp 会话。我目前的代码如下:

def run_ssh():
    hook = SSHHook(ssh_conn_id='xyz').get_conn() #returns an ssh client
    stdin, stdout, stderr = hook.exec_command('sftp user@host.com;')
    # This next step prompts me for password so i provide it
    stdin.write('password')
    logging.info(stdout.readlines())
    stdin, stdout, stderr = hook.exec_command('ls')
    logging.info(stdout.readlines())

当我打印最后一行时,我应该看到一些文件夹,但只是看到 ['a\n']... 所以看来我实际上无法 sftp。有没有更好的方法通过本地运行的 python 脚本从远程主机进行 sftp。

对此的任何帮助表示赞赏。答案可以针对一个简单的 python 脚本,而不是气流。

【问题讨论】:

【参考方案1】:

对于您的字面问题,请参阅:Pass input/variables to command/script over SSH using Python Paramiko


虽然以这种方式实现 SFTP over jump host 并不是一个好的解决方案。

改用端口转发:

Nested SSH using Python Paramiko Port forwarding and the open SFTP using Python Paramiko

【讨论】:

以上是关于用于从该框中通过 SSH 连接到 jumphost 和 sftp 的 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 Netbeans 中通过 SSH 连接到 MySql db

在 PHP 中通过 SSH 连接到 MySQL

在 PHP 中通过 SSH 连接到 MySQL 服务器

在 Linux 中通过 SSH 连接到 Amazon EC2

在 Java 中通过 SSH 隧道运行远程命令

发送SSH命令以配置网络设备