繁体   English   中英

Python piramiko,建立SSH连接时连接超时错误

[英]Python piramiko, Connection Timed Out Error While Establishing SSH Connection

我正在使用Python创建一个项目,该项目将创建一个Amazon ec2实例 ,并建立SSH和SFTP连接以在本机和ec2实例之间传输文件和命令。

因此,我开始编写代码,并编写了使用boto3库创建ec2实例的函数。

# creating a file named sefa.pem that will store the private key
outfile = open('sefa.pem', 'w')
keypair = ec2.meta.client.create_key_pair(KeyName='sefakeypair')  # creates key pair
keyout= str(keypair['KeyMaterial'])  # reads the key material
outfile.write(keyout)  # writes the key material in sefa.pem

# creates the instance finally
response = ec2.create_instances(ImageId='ami-34913254', MinCount=1, MaxCount=1, InstanceType='t2.micro')

之后,我应该在机器和ec2实例之间建立SSH连接以发送命令,并且还应该在机器和ec2实例之间传输并取回文件。

经过研究,我发现有一个名为piramiko的Python库,用于在我的计算机和ec2实例之间建立SSH连接和SFTP连接

我试图在我的计算机和ec2实例之间建立SSH连接,但是一天都遇到“ [Errrno 110]连接超时错误” 我已经在互联网上搜索了几个小时,但是找不到任何有用的信息。 这是出现“连接超时错误”的代码:

    con = paramiko.SSHClient()  # ssh client using paramiko library
    con.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # this is needed because of adding policy automautically
    k = paramiko.RSAKey.from_private_key_file("sefa.pem")  # k reads sefa.pem and stores private key
    time.sleep(30)  # added this because ec2 should do 2/2 checks  before connecting
    print("connecting")
    con.connect(hostname=PUB_DNS, username="ubuntu", pkey=k, look_for_keys=True)  # HERE IS THE ERROR, I CAN'T CONNECT
    print("connected")
    stdin, stdout, stderr = con.exec_command('echo "TEST"')
    print(stdout.readlines())
    con.close()

没有建立我的机器和ec2实例之间的连接,我就走得更远。

  • 您对解决这个问题有什么建议吗?
  • piramiko是否有其他库?

我设法解决了这个问题。 问题是我的ec2实例。 这些解决了问题:

  • 确保实例的安全组具有ssh守护程序并允许您连接。
  • 确保具有创建实例时创建的密钥对。
  • 确保执行chmod 400 keypair.pem

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM