python:如何从EC2实例在本地计算机上运行命令

python:如何从EC2实例在本地计算机上运行命令,python,amazon-ec2,Python,Amazon Ec2,我正在尝试使用python脚本从生产转储自动创建postgres数据库。我正在托管RoR应用服务器的EC2实例上运行此脚本 我能够使用psychopg创建DB。但在同一个脚本中,我要执行以下操作: - do a deploy using capistrano from local machine 我在研究中遇到了paramiko-SSHClient。我认为它可以被使用。但我不确定如何从EC2实例SSH到本地机器。 我找到了我的IP(比如a.b.c.d),并尝试从EC2实例中使用ssh a.b.

我正在尝试使用python脚本从生产转储自动创建postgres数据库。我正在托管RoR应用服务器的EC2实例上运行此脚本

我能够使用psychopg创建DB。但在同一个脚本中,我要执行以下操作:

- do a deploy using capistrano from local machine
我在研究中遇到了paramiko-SSHClient。我认为它可以被使用。但我不确定如何从EC2实例SSH到本地机器。 我找到了我的IP(比如a.b.c.d),并尝试从EC2实例中使用
ssh a.b.c.d
,但它说:

ssh: connect to host a.b.c.d port 22: Connection refused
所以我的问题是: -如果此方法(使用paramiko)是正确的,那么如何设置从EC2实例到本地计算机的ssh连接 或
如果paramiko无法实现这一点,我如何从EC2实例上的脚本运行部署呢?首先,paramiko的级别有点低,您可以尝试使用,它将使很多事情变得更容易

其次,检查您的本地机器是否正常工作

  • 可从互联网访问,即具有公共IP地址
  • 运行SSH(假设您运行*NIX-like操作系统,运行
    ps-ef | grepshd
    , 如果您看到流程匹配,那么您应该能够连接)

那么,如果您想在EC2实例上自动创建postgres DB,为什么需要从它到本地机器的连接呢。逆转这个过程不是更合乎逻辑吗?即从本地计算机到EC2实例的SSH。

您可以设置反向SSH隧道(google it;)@Puciek:谢谢。我试试这个谢谢你的回答。关于你的第三点:当我开始编写脚本时,我没有意识到我必须添加部署特性。因为在EC2中需要DB,所以我在EC2中编写了脚本。令人惊讶的是,同样的脚本在我的本地机器上不起作用。我不知道为什么你的本地机器不运行SSH?你用的是哪个操作系统?我刚用你提到的命令检查过。它显示正在运行的进程。我正在使用ubuntu 12.04