SSH2 ssh2_connect
(PECL ssh2 >= 0.9.0)
ssh2_connect — SSH 서버에 연결
설명
ssh2_connect( string $host, int $port = 22, array $methods = ?, array $callbacks = ? ): resource|false
원격 SSH 서버에 대한 연결을 설정합니다.
연결되면 클라이언트는 ssh2_fingerprint()를 사용하여 서버의 호스트 키를 확인한 다음 암호 또는 공개 키를 사용하여 인증해야 합니다.
매개변수
host
port
methods
methods
는 아래에 설명된 대로 최대 4개의 매개변수가 있는 연관 배열일 수 있습니다.methods
는 다음 매개변수 중 일부 또는 모두가 있는 연관 배열일 수 있습니다.Index Meaning Supported Values* kex 광고할 키 교환 메서드 목록입니다. 선호도에 따라 쉼표로 구분됩니다. diffie-hellman-group1-sha1
,diffie-hellman-group14-sha1
및diffie-hellman-group-exchange-sha1
hostkey 광고할 호스트 키 메서드 목록, 선호도에 따라 쉼표로 구분. ssh-rsa
및ssh-dss
client_to_server 클라이언트에서 서버로 전송되는 메시지에 대한 암호화, 압축 및 메시지 인증 코드(MAC) 메서드 기본 설정을 포함하는 연관 배열입니다. server_to_client 서버에서 클라이언트로 전송되는 메시지에 대한 암호화, 압축 및 MAC(메시지 인증 코드) 메서드 기본 설정을 포함하는 연관 배열입니다. * - 지원되는 값은 기본 라이브러리에서 지원하는 메서드에 따라 다릅니다. 추가 정보는 » libssh2 문서를 참조하세요.
client_to_server
및server_to_client
는 다음 매개변수 중 일부 또는 모두가 있는 연관 배열일 수 있습니다.Index Meaning Supported Values* crypt 광고할 암호화 메서드 목록, 선호도 순서대로 쉼표로 구분. rijndael-cbc@lysator.liu.se
,aes256-cbc
,aes192-cbc
,aes128-cbc
,3des-cbc
,blowfish-cbc
,cast128-cbc
,arcfour
및none**
comp 광고할 압축 메서드 목록입니다. 선호도에 따라 쉼표로 구분됩니다. zlib
및none
mac 보급할 MAC 메서드의 목록이며, 선호도 순서대로 쉼표로 구분됩니다. hmac-sha1
,hmac-sha1-96
,hmac-ripemd160
,hmac-ripemd160@openssh.com
및none**
참고: 암호화 및 MAC 메서드 "none"보안상의 이유로 적절한 ./configure 옵션을 사용하여 빌드 시간 동안 명시적으로 활성화하지 않는 한 기본 » libssh2 라이브러리에서 비활성화되지 않습니다. 자세한 내용은 기본 라이브러리에 대한 설명서를 참조하십시오.
callbacks
callbacks
은 다음 매개변수 중 일부 또는 전부가 포함된 연관 배열일 수 있습니다.콜백 매개변수
Index Meaning Prototype ignore SSH2_MSG_IGNORE
패킷 수신 시 호출할 함수 이름void ignore_cb($message) debug SSH2_MSG_DEBUG
패킷 수신 시 호출할 함수 이름void debug_cb($message, $language, $always_display) macerror 패킷을 수신했지만 메시지 인증 코드에 실패했을 때 호출할 함수의 이름입니다. 콜백이 true
를 반환하면 불일치가 무시되고, 그렇지 않으면 연결이 종료됩니다.bool macerror_cb($packet) disconnect SSH2_MSG_DISCONNECT
패킷 수신 시 호출할 함수 이름void disconnect_cb($reason, $message, $language)
반환 값
성공 시 리소스를 반환하고 오류 시 false
를 반환합니다.
Examples
예제 #1 ssh2_connect() 예제
패킷을 보낼 때 3des-cbc를 강제로 연결을 열고, 패킷을 받을 때 모든 강도 aes cipher를 열고, 어느 방향으로도 압축하지 않고, Group1 키를 교환합니다.
<?php
/* Notify the user if the server terminates the connection */
function my_ssh_disconnect($reason, $message, $language) {
printf("Server disconnected with reason code [%d] and message: %s\n",
$reason, $message);
}
$methods = array(
'kex' => 'diffie-hellman-group1-sha1',
'client_to_server' => array(
'crypt' => '3des-cbc',
'comp' => 'none'),
'server_to_client' => array(
'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
'comp' => 'none'));
$callbacks = array('disconnect' => 'my_ssh_disconnect');
$connection = ssh2_connect('shell.example.com', 22, $methods, $callbacks);
if (!$connection) die('Connection failed');
?>
기타
- ssh2_fingerprint() - 원격 서버의 지문 검색
- ssh2_auth_none() - "none"으로 인증
- ssh2_auth_password() - 일반 비밀번호를 사용하여 SSH를 통해 인증
- ssh2_auth_pubkey_file() - 공개 키를 사용하여 인증
- ssh2_disconnect() - 원격 SSH 서버에 대한 연결 닫기