PHP 에서 원격지의 서버에 접속해서 데이터를 교환하거나 , 특정 프로그램을 실행시키기 위해 사용할 수 있다.

준비물 : OpenSSL(lib), libssh2, php_ssh2

리눅스 시스템
1. OpenSSL http://www.openssl.org
직접 다운로드 (http://www.openssl.org/source/openssl-0.9.8k.tar.gz)

2. libssh2 http://sourceforge.net/projects/libssh2/
직접 다운로드 (http://jaist.dl.sourceforge.net/sourceforge/libssh2/libssh2-1.1.tar.gz)

3. ssh2 PHP extension http://pecl.php.net/package/ssh2
직접 다운로드 (http://pecl.php.net/get/ssh2-0.11.0.tgz)

OpenSSL 설치


우선 소스를 적당한 디렉토리 (예제에서는 /usr/local/src 를 사용함) 에 다운로드 받는다.
# tar zxvf openssl-0.9.8k.tar.gz
# cd openssl-0.9.8k
# ./config 또는 ./Configure --linux-elf --prefix=/usr/local/OpenSSL
# make
# make install

Libssh2 설치


소스를 다운로드 받고 적당한 디렉토리에 타르볼을 해제한다.
# tar zxvf libssh2-1.1.tar.gz
# cd libssh2-1.1
# ./configure (기본적으로 설치는 /usr/local 에 이루어진다. )
# make
# make install
설치가 완료된 후에 /usr/local/lib 에 libssh2.so 파일이 존재한다.

PHP ssh2 Extension 설치


# tar zxvf ssh2-0.11.0.tgz
# cd ssh2-0.11.0
# phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
# ./configure
# make
# cp .libs/ssh2.so /usr/local/php/
(이 예제는 PHP Extension을 /usr/local/lib 에 복사를 한다.)
# vi /usr/local/lib/php.ini
extension=ssh2.so 를 추가 시켜준다.
** 여기서 extension_dir의 경로가 /usr/local/php 로 설정이 되어있고 , 시스템마다 다른경로로 표현이 될수 있음
# php -m | grep ssh2
ssh2

설치가 완료 되었으므로 Apache 웹서버를 재 시작해준다.

PHP ssh2 Extension 설치 후 해당 Extension 사용방법이다.

사용자 삽입 이미지

phpinfo() 구문을 실행 했을때 위와 같이 ssh2 확장이 설치가 되어 있어야 한다.

 'diffie-hellman-group1-sha1',
		'client_to_server' =>	// 클라이언트 -> 서버
			array(
				'crypt' => '3des-cbc',	// 암호화 방식은 3des-cbc 로 사용하고 
				'comp' => 'none'		// 압축은 사용하지 않는다.
			),
		'server_to_client' => 	// 서버 -> 클라이언트 
			array(
				'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',	// 암호화 방식
				'comp' => 'none'		// 압축사용여부
			)
	);

	// SSH 에 접속한다. 
	$rCon = ssh2_connect('125.***.50.***', 22, $arMethod);
	$bLgn = ssh2_auth_password($rCon ,'lovelgw' , '********');	// 계정 , 비밀번호를 적어 넣는다.
	
	var_dump($bLgn);	// true로 나오면 정상 접속
	
	// 프로그램 실행
	
	$strExec = '/usr/local/bin/php -m';
	$rStream = ssh2_exec($rCon, $strExec);
	
	stream_set_blocking($rStream, true);	// 스트림을 블럭킹 모드로 변환시킨다. 
	echo fread($rStream, 10240);		// 값을 가져온다. 10240 Byte까지만
?>

위와같은 식으로 사용하면 된다.    
2011/09/07 01:17 2011/09/07 01:17

Trackback Address :: https://youngsam.net/trackback/1513