简体   繁体   中英

SSH Connection to Amazon EC2 Instance Via PHP

Trying to connect to an Amazon EC2 instance using a .pem file, PHP, and phpseclib.

I have tried what's mentioned in this post: ssh access to ec2 from php

However, I keep getting "Error 111. Connection refused in..."

When I connect from my own machine using ssh and the same .pem file, there are no errors.

Here is the code from the original post that I am using:

include('Net/SSH2.php');
include('Crypt/RSA.php');

$key = new Crypt_RSA();

$key->loadKey(file_get_contents('/pathtokey.pem'));


$ssh = new Net_SSH2('ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com');
if (!$ssh->login('user', $key)) {
    exit('Login Failed');
}

I just tested the sample code provided and it works with my Amazon EC2 Ubuntu instance.

You have to check the obvious as proposed:

  • Hostname
  • Username
  • PEM file path

Are they correct? Are you sure you are using the same ones that you use when connecting from your own machine?

If they are the same, are you testing the code from the same machine? If not, does the host from where you are running the code has the port 22 open for outbound connections?

Obvious thing to check, is the port open and allowed for your user?

Try just doing:

wget ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:22

From the machine that's giving you trouble and see if you can open the socket.

I guess you may need to run that command through PHP with shell_exec() to make sure it's being called by the same user/security settings.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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