【问题标题】:Connection from one EC2 instance to another EC2 instance using phpseclib使用 phpseclib 从一个 EC2 实例连接到另一个 EC2 实例
【发布时间】:2014-04-10 16:01:02
【问题描述】:

您好,我在一个 EC2 上使用 HANA,并使用 SUSE Linux 中已经存在的 PHP 从其他实例获取数据。当我尝试从本地系统获取数据时,相同的代码工作正常。但它在那里不起作用,也没有显示任何错误。请帮忙。这是我的代码:

error_reporting(1);
set_time_limit(0);
$date = date("d/m/Y-h:i:s") . "\n"; //to get today's date and time                  
$logfile = "file-transfer";
$fpath ="log/";
$filepath = $fpath .$logfile . '-log-' . date('Y-m-d') . '.csv';  //path of error log file
$fh1 = fopen($filepath, 'a'); //opening the error log file 
fwrite($fh1, "Process Started@" .$date. "\n");

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

$key = new Crypt_RSA();

$key->loadKey(file_get_contents('key/private.ppk'));

$local_directory = 'sap/';

$remote_directory = '/var/www/';
$file = 'index.html';

$sftp = new Net_SFTP('ec2-XX-XXX-CCC-XX.ap-southeast-1.compute.amazonaws.com');
if (!$sftp->login('ubuntu', $key)) {    
    fwrite($fh1, "Login Failed" .$date. "\n");
}
else{

    fwrite($fh1, "Login Successful@" .$date. "\n");
}


 //$success = $sftp->put($remote_directory . $file,$local_directory . $file,NET_SFTP_LOCAL_FILE);
 $success = $sftp->get($remote_directory . $file,$local_directory . $file);
if($success){
     fwrite($fh1, "File Transferred Successfully@" .$date. "\n");
}
else{
    fwrite($fh1, "Error:" .$date.error_get_last(). "\n");

}

错误地,当我输入错误的主机名时,它会抛出登录失败消息。但是当我输入正确的主机名时它不起作用。

【问题讨论】:

    标签: php ssh amazon-ec2 amazon phpseclib


    【解决方案1】:

    如果您将 VPC 用于 AWS 内的网络,则需要打开安全组中的端口,以便同一安全组中的 EC2 实例可以看到并可以相互访问。

    http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html

    【讨论】:

    • 感谢 Diego, 长期以来我一直在寻求解决方案,但没有找到任何积极的东西。我已经检查了 Outbound 默认情况下对所有端口都是开放的。入站我已指定 22 与其他人分开。
    • 尝试将端口 22 授权给安全组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多