개요
libssh2 라이브러리는 암호화된 보안 전송 방식을 통해 원격 머신의 다양한 리소스에 접근할 수 있도록 지원합니다. 제공되는 주요 기능은 셸(shell), 원격 명령 실행(remote exec), 터널링(tunneling), 파일 전송(file transfer), SCP입니다.
PHP는 이러한 리소스를 다룰 수 있도록 각각 ssh2.shell://, ssh2.exec://, ssh2.tunnel://, ssh2.sftp://, ssh2.scp://라는 스트림 래퍼(wrapper)를 제공합니다.
설치 참고 사항
SSH2 관련 래퍼는 기본적으로 활성화되어 있지 않습니다. 사용하려면 PECL에서 배포되는 SSH2 확장 모듈을 반드시 설치해야 합니다.
pecl install ssh2
사용 방법
각 래퍼는 아래와 같은 형식으로 URL 스타일의 경로를 사용해 원격 리소스에 접속합니다.
ssh2.shell://user:pass@example.com:22/xterm
ssh2.exec://user:pass@example.com:22/usr/local/bin/somecmd
ssh2.tunnel://user:pass@example.com:22/192.168.0.1:14
ssh2.sftp://user:pass@example.com:22/path/to/filename
- ssh2.shell:// – 원격 셸 세션을 열 때 사용합니다.
- ssh2.exec:// – 원격 서버에서 특정 명령어를 실행할 때 사용합니다.
- ssh2.tunnel:// – 지정된 호스트와 포트로 터널을 생성할 때 사용합니다.
- ssh2.sftp:// – SFTP 프로토콜로 파일을 읽고 쓸 때 사용합니다.
- ssh2.scp:// – SCP 프로토콜로 파일을 복사할 때 사용합니다.
ssh2.*:// 컨텍스트 옵션
스트림 컨텍스트를 생성할 때 아래 옵션들을 지정하여 접속 동작을 세부적으로 제어할 수 있습니다.
| session | 재사용할 사전 연결된(preconnected) ssh2 리소스입니다. |
|---|---|
| sftp | 재사용할 사전 할당된(preallocated) sftp 리소스입니다. |
| methods | 키 교환(key exchange), 호스트키(hostkey), 암호화(cipher), 압축(compression), MAC 방식 등 콜백에 사용할 메서드를 지정합니다. |
| username | 접속에 사용할 사용자 이름입니다. |
| password | 비밀번호 인증 시 사용할 비밀번호입니다. |
| pubkey_file | 인증에 사용할 공개키(public key) 파일의 이름입니다. |
| privkey_file | 인증에 사용할 개인키(private key) 파일의 이름입니다. |
| env | 설정할 환경 변수를 담은 연관 배열(associative array)입니다. |
| term | pty를 할당할 때 요청할 터미널 에뮬레이션 유형입니다. |
| term_width | pty를 할당할 때 요청할 터미널의 너비입니다. |
| term_height | pty를 할당할 때 요청할 터미널의 높이입니다. |
| term_units | term_width와 term_height 값에 적용할 단위입니다. |
활용 팁
보안을 위해 URL에 비밀번호를 직접 노출하는 대신, 컨텍스트 옵션의 username과 password 또는 pubkey_file/privkey_file을 사용한 공개키 인증 방식을 권장합니다. 또한 이미 열려 있는 ssh2 세션이 있다면 session 옵션으로 재사용하여 불필요한 접속 오버헤드를 줄일 수 있습니다.