2013-07-26 5 views
0

ssh가 원격 서버에 연결하고 명령을 실행하는 PHP 스크립트를 작성하려고합니다. 예외 다음인증 실패 ssh2_auth_pubkey_file()

$ssh = ssh2_connect($ip,22); 
$boolean = ssh2_auth_pubkey_file($ssh, $user, './pubkey.pub', './privatekey.ppk'); 
$stream = ssh2_exec($ssh, $command); 
stream_set_blocking($stream, true); 

내 스크립트 반환 : 이 지금까지 내 코드는

Warning: ssh2_auth_pubkey_file() [function.ssh2-auth-pubkey-file]: Authentication failed for $user using public key in file.php 

내가 퍼티 내 개인 키 내가 어떤 문제없이 연결할 수 있습니다로 연결합니다.

나는 PuttyGen을 사용하여 .ppk 파일에서 공개 키를 생성했습니다.

아무도 도와 줄 수 있습니까?

답변

0

개인적으로는 phpseclib, a pure PHP SSH implementation을 사용하는 것이 더 좋을 것이라고 생각합니다. 예.

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

$ssh = new Net_SSH2('www.domain.tld'); 
$key = new Crypt_RSA(); 
$key->loadKey(file_get_contents('privatekey')); 
if (!$ssh->login('username', $key)) { 
    exit('Login Failed'); 
} 

echo $ssh->exec('pwd'); 
echo $ssh->exec('ls -la'); 
?> 

다른 것들 중에서도 별도의 공개 키와 개인 키 파일이 필요하지 않습니다. 그래서 이것이 당신에게 잠재적 인 문제 중 하나입니다. 공개 키/개인 키 파일의 불일치.

또한 phpseclib를 사용하면 로깅을 활성화하고 정확히 어디에서 실패했는지 확인할 수 있습니다. 반면 libssh2는 그러한 기능을 제공하지 않습니다.