2015-02-03 2 views
1

로컬 호스트와 대상 호스트 사이에 scp와 apache 사용자에 대한 질문이 있습니다.symfony2 스크립트에서 scp로 아파치 만들기

내 컴퓨터에서 .ssh 폴더를/var/www /에 만들고 www- 데이터 사용자 용 rsa 키를 생성했습니다.

다음으로 대상 서버의 authorized_key 파일에 id_rsa.pub 콘텐츠를 복사했습니다.

내가 sudo -u www-data scp somefile.php root @ destination_ip :/home /과 같은 scp를 만들면 작동한다.

하지만 저는 이것을 심포니 스크립트에서 사용하고 있습니다.

$process = new Process('scp somefile.jpg [email protected]_ip:/home/'); 
$process->setTimeout(3600); 
$process->run(); 

if (!$process->isSuccessful()) { 

    throw new \RuntimeException($process->getErrorOutput()); 
} 

호스트 키 확인에 실패했습니다. 예외가 발생합니다.

이유를 모르겠다.

제발 도와 주실 수 있습니까?

답변

1

ssh2 php 라이브러리를 사용하여 ssh2_scp_send 명령을 통해 파일을 복사 할 수 있습니다. 이 명령에 대한, 내가 ssh2_connect 및 ssh2_sftp을 사용했다 http://php.net/manual/en/function.ssh2-scp-send.php

예제 코드가있을 수 있습니다 ...

$connection = ssh2_connect('shell.example.com', 22, array('hostkey'=>'ssh-rsa')); 

if (ssh2_auth_pubkey_file($connection, 'username', 
          '/var/www/.ssh/id_rsa.pub', 
          '/var/www/.ssh/id_rsa', 'secret')) { 
    echo "Public Key Authentication Successful\n"; 
} else { 
    die('Public Key Authentication Failed'); 
} 
ssh2_scp_send($connection, '/local/somefile.jpg', '/remote/somefile.jpg', 0644); 
+0

... PHP 매뉴얼을 확인하고 작동합니다. 보안 (루트가 아닌)을위한 백업 특정 사용자를 만들었습니다. – zobbiwan

0

이것은 아파치 프로세스를 실행하는 사용자가 루트가 아니며 해당 서버에 연결할 수있는 권한이 없기 때문입니다. 사용자가 아파치 실행 확인 명령 줄에서 다음 (보통 www가 데이터를? ps aux | grep apache 시도)과 :

sudo su www-data 
scp somefile.jpg [email protected]_ip:/home/ 

을가 암호를 요청하는 경우, 당신은에서 SSH 키를 복사 할 필요가있을 것이다 www 데이터 사용자. 아마도 ssh-copy-id [email protected]_ip이 작동하고 scp 명령을 다시 시도하면 다시 작동합니다. www 데이터 사용자 용 ssh-keys를 생성해야 할 수도 있습니다.

관련 문제