boto
を使用してEC2インスタンスでbashスクリプトを実行しようとしています。 Botoは公共のIP上でSSHからEC2インスタンスへの方法を提供しますが、私の場合、インスタンスはプライベートIPしか持っていません。これらのインスタンスでSSHが実行される方法は、プライベートIP(Bastionホスト)を使用するすべてのインスタンスでSSHできるホストを使用しています。続き は、パブリックIP上のインスタンスに接続するためのスクリプトです:SSHからEC2インスタンスに、Bastionサーバー経由でプライベートIP上でbotoを使用
s3_client = boto3.client('s3')
s3_client.download_file('mybucket','key/mykey.pem', '/tmp/mykey.pem')
k = paramiko.RSAKey.from_private_key_file("/tmp/mykey.pem")
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
host=event
print "Connecting to " + host
c.connect(hostname = host, username = "ec2-user", pkey = k)
我々は公共IPで要塞ホストを通じてP.P.P.P
スクリプトはどこで実行されていますか?インターネット上の自分のコンピュータやAmazon EC2インスタンスでは? EC2の場合は、同じVPCにありますか?それがEC2の外にあり、プライベートサブネット内のインスタンスに接続しようとしている場合は、パブリックインスタンスにSSH接続し、別のSSH接続をそこからプライベートインスタンスに開始する必要があります。 –
はい、私はプライベートサブネットでインスタンスにsshするこのインスタンスから最初にsshする必要があるインスタンスがあります。 paramikoを使って、上記のスクリプトでどのように達成できるのでしょうか? –
これはできません。一般公開のインスタンスにSSHする必要があります。次に、PublicインスタンスからPrivateインスタンスに別のSSHセッションを開始します。 –