본문 바로가기

『IT/개발』/PHP

[PHP] 원격서버에 파일 올리기 (ssh2_connect)

PHP 에서 원격서버에 파일을 업로드 하는 방법은 굉장히 간단합니다.

소스코드 단 4줄이면 끝이죠.

하지만 원격서버에 파일을 올리기 위해서는 'ssh2_connect', 'ssh2_auth_password', 'ssh2_scp_send 등의 함수를 사용해야 합니다.

그냥 사용하면되지 무엇이 문제냐구요?

있어야 사용을 하지요...

사용 할 수 있도록 사용환경을 셋팅해봅시다.


php-pecl-ssh2 패키기 설치

"php-pecl-ssh2" 패키지를 설치하면 위 함수들을 사용할 수 있습니다.

# yum list php-pecl-ssh2 라고 명령어를 쳐보세요.

설치가 되어있으면 위와 같이 나올 것이고 만약에 설치가 되어 있지않으면 설치 할 수있다고 나올 것입니다.

하지만 위 두 가지의 경우 말고 아예 패키지를 찾을 수 없는 경우도 있을 거예요.

이유는 간단합니다.

remi 저장소가 추가되어 있지 않기 때문입니다.

remi 저장소가 추가되어 있지 않다면 방법은 두 가지가 있습니다.

첫째. remi 저장소를 추가한다.

둘째. rpm 파일을 직접 설치 한다.


첫 번째 방법. remi 저장소를 추가한다.

아래 링크를 따라서 설치해주세요.

리눅스(Linux) remi 저장소 추가(설치) 하기

remi 저장소를 추가 하셨다면 아래 명령어를 이용해서 php-pecl-ssh2 를 설치합니다.

# yum install php-pecl-ssh2 

위 명령어가 안된다면 아래 명령어로 해주세요.

# yum --enablerepo=remi install php-pecl-ssh2


두 번째 방법. rpm 파일을 직접 설치한다.

  1. http://rpm.pbone.net/ 사이트에 방문한다.
  2. 검색창에 "php-pecl-ssh2" 라고 검색을 한다.
  3. 자신의 환경에 맞는 rpm 파일을 선택한다.
  4. 다운로드 란에 링크를 우클릭 한 후 "링크 주소 복사" 를 한다.
  5. 리눅스 상에서 < # rpm -ivh "복사한 주소 붙여넣기" > 엔터
  6. 설치 완료.


아파치 재 실행

# service httpd restart 명령어를 수행합니다.


PHP 소스

<?php

$connection = ssh2_connect('192.168.0.5', 22); // 원격서버 주소 입력

ssh2_auth_password($connection, 'root', '비밀번호'); // 원격서버 계정 입력

$sftp = ssh2_sftp($connection);

ssh2_scp_send($connection, $file['tmp_name'], "파일이름을 포함한 경로입력", 0644);

// $file['tmp_name'] 는 업로드 할 파일을 의미합니다.

?>

소스는 굉장히 간단하죠?

이 소스를 사용하기 위한 준비가 더 복잡한듯하네요.