2012-05-21 7 views
3

.pem 파일, PHP 및 phpseclib를 사용하여 Amazon EC2 인스턴스에 연결하려고합니다.PHP를 통해 Amazon EC2 인스턴스에 SSH 연결

내가이 글에서 언급 무엇을 시도했다 그러나 ssh access to ec2 from php

, 나는 점점 계속 "오류 111 연결이 거부에 ..."나는 내 자신의 컴퓨터 사용하여 SSH와에서 연결

동일한 .pem 파일에는 오류가 없습니다. ,

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'); 
} 

답변

4

제공된 샘플 코드를 테스트하기 만하면 Amazon EC2 Ubuntu 인스턴스에서 작동합니다.

당신은 분명 제안한를 확인할 수 있습니다

  • 호스트 이름
  • 이름
  • PEM 파일 경로

들이 정확합니까? 자신의 컴퓨터에서 연결할 때 사용하는 것과 동일한 것을 사용하고 있습니까?

동일한 경우 동일한 컴퓨터에서 코드를 테스트하고 있습니까? 그렇지 않은 경우 코드를 실행중인 호스트에서 아웃 바운드 연결을 위해 포트 22가 열려 있습니까?

+0

나는 모든 명백한베이스가 커버되었음을 확신합니다. 한 가지 주목할 점은 특히 CentOS를 실행하는 FMS 인스턴스에 대한 것입니다. 차이가 있는지 확실하지 않습니다. 아웃 바운드 포트 문제는 확인해 볼 가치가있는 것 같습니다. 그것을 확인한 후에 다시 올 것이다. – user883210

+0

내 호스트에 따르면 포트 22는 아웃 바운드 연결을 위해 열려 있습니다. 하지만 이상한 점은 터미널 (로컬 컴퓨터)을 통해 SSH 연결을 열 수 있지만 phps (호스트)가 phpseclib의 NET_SSH2를 통해 또는 phpseclib에서 사용하는 fsockopen 명령을 통해 동일한 오류 111을보고한다는 것입니다. – user883210

+1

은 처음으로 내게 응답하는 잘못된 정보 지원 담당자와 함께 호스트 관련 문제였던 것 같습니다. 포트 22는 hostgator 방화벽에 의해 차단되었습니다. 이것은 미래의 누군가를 도울 것입니다 : http://support.hostgator.com/articles/how-to-enable-fsockopen – user883210

0

뻔한 일을 확인하기 위해 포트를 열고 사용자에게 허용입니다 : 여기

은 내가 사용하고있는 원래의 게시물에서 코드? 당신에게 문제를주고 기계에서

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

하고 소켓을 열 수 있는지 :

은 일을보십시오.

같은 사용자/보안 설정에 의해 호출되고 있는지 확인하려면 shell_exec()를 사용하여 PHP를 통해 해당 명령을 실행해야 할 수도 있습니다.

+0

shell_exec로 wget을 실행할 때 PHP에서 답장을 얻을 수 없었습니다 – user883210