downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ssh2_exec> <ssh2_auth_pubkey_file
[edit] Last updated: Fri, 23 Mar 2012

view this page in

ssh2_connect

(PECL ssh2 >= 0.9.0)

ssh2_connectBir SSH sunucusuna bağlanır

Açıklama

resource ssh2_connect ( string $konak [, int $port = 22 [, array $yöntemler [, array $geriçağırımlar ]]] )

Bir uzak SSH sunucusuna bağlanıp bir bağlantı özkaynağı döndürür.

Bağlantı sağlanır sağlanmaz, istemcinin ssh2_fingerprint() işlevini kullanarak konak anahtarını ve ardından parola veya genel anahtarla kullanıcı kimliğini doğrulaması gerekir.

Değiştirgeler

konak

port

yöntemler

Aşağıda açıklanan dört değiştirgeden bazılarını içeren bir ilişkisel dizi.

Yöntemler
İndis Anlamı Desteklenen değerler*
kex Anahtar müzakere yöntemlerinin listesi; tercih sırasına göre dizilmiş virgül ayraçlı bir listedir. diffie-hellman-group1-sha1, diffie-hellman-group14-sha1 ve diffie-hellman-group-exchange-sha1
hostkey Müzakere edilecek konak anahtarı yöntemlerinin listesi; tercih sırasına göre dizilmiş bir listedir. ssh-rsa ve ssh-dss
client_to_server İstemciden sunucuya gönderilen iletiler için şifreleme, sıkıştırma ve ileti kimlik doğrulaması kodu (MAC) ile igili yöntem tercihlerini içeren bir ilişkisel dizi.  
server_to_client Sunucudan istemciye gönderilen iletiler için şifreleme, sıkıştırma ve ileti kimlik doğrulaması kodu (MAC) ile igili yöntem tercihlerini içeren bir ilişkisel dizi.  

* - Desteklenen değerler sisteminizdeki kütüphaneye bağlıdır. Daha ayrıntılı bilgi için » libssh2 belgelerine bakınız.

client_to_server ve server_to_client aşağıdaki değiştirgelerin tamamını veya bir kısmını içeren bir ilişkisel dizidir.
İndis Anlamı Desteklenen değerler*
crypt Müzakere edilecek şifreleme yöntemleri; tercih sırasına göre dizilmiş virgül ayraçlı bir listedir. rijndael-cbc@lysator.liu.se, aes256-cbc, aes192-cbc, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, arcfour ve none**
comp Müzakere edilecek sıkıştırma yöntemleri; tercih sırasına göre dizilmiş virgül ayraçlı bir listedir. zlib ve none
mac Müzakere edilecek MAC yöntemleri; tercih sırasına göre dizilmiş virgül ayraçlı bir listedir. hmac-sha1, hmac-sha1-96, hmac-ripemd160, hmac-ripemd160@openssh.com ve none**

Bilginize: Crypt ve MAC yöntemi "none"

Güvenlik saikiyle, none değeri » libssh2 kütüphanesi tarafından iptal edilmiştir. Bu değeri etkin kılmak isterseniz kütüphaneyi derlerken uygun ./configure seçeneğini kullanmanız gerekir. Daha fazla bilgi için kütüphane belgelerine bakınız.

geriçağırımlar

Aşağıdaki değiştirgeleri içeren bir ilişkisel dizidir.

Geriçağırım değiştirgeleri
İndis Anlamı İşlev bildirimi
ignore Bir SSH2_MSG_IGNORE paketi alındığında çağrılacak işlevin ismi. void ignore_cb($ileti)
debug Bir SSH2_MSG_DEBUG paketi alındığında çağrılacak işlevin ismi. void debug_cb($ileti, $dil, $hep_göster)
macerror Bir paket alındığında ileti kimlik doğrulaması başarısız olduğunda çağrılacak işlevin ismi. Eğer geri çağırım işlevi TRUE döndürürse uyuşmazlık görmezden gelinir, yoksa bağlantı sonlandırılır. bool macerror_cb($packet)
disconnect Bir SSH2_MSG_DISCONNECT paketi alındığında çağrılacak işlevin ismi. void disconnect_cb($sebep, $ileti, $dil)

Dönen Değerler

Başarı durumunda bir özkaynak yoksa FALSE döner.

Örnekler

Örnek 1 - ssh2_connect() örneği

Paket gönderirken 3des-cbc, paket alırken güçlü aes şifremesi için zorlayan, hiçbir yönde sıkıştırma yapılmayan ve Group1 anahtar değişim yöntemini kullanan bir bağlantı açalım.

<?php
/* Sunucu bağlantıyı sonlandırırsa kullanıcıya bilgi verelim */
function my_ssh_disconnect($ebep$ileti$dil) {
  
printf("Sunucu bağlantıyı kesti; sebep kodu ve ileti: [%d] %s\n",
         
$sebep$ileti);
}

$yontemler = 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'));

$islevler = array('disconnect' => 'my_ssh_disconnect');

$baglanti ssh2_connect('shell.example.com'22$yontemler$islevler);
if (!
$baglanti) die('Bağlantı sağlanamadı');
?>

Ayrıca Bakınız



add a note add a note User Contributed Notes ssh2_connect
Steve Kamerman 05-Jul-2011 09:06
Due to a lack of complete examples, here's a simple SSH2 class for connecting to a server, authenticating with public key authentication, verifying the server's fingerprint, issuing commands and reading their STDOUT and properly disconnecting.  Note: You may need to make sure you commands produce output so the response can be pulled.  Some people suggest that the command is not executed until you pull the response back.
<?php
class NiceSSH {
   
// SSH Host
   
private $ssh_host = 'myserver.example.com';
   
// SSH Port
   
private $ssh_port = 22;
   
// SSH Server Fingerprint
   
private $ssh_server_fp = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
   
// SSH Username
   
private $ssh_auth_user = 'username';
   
// SSH Public Key File
   
private $ssh_auth_pub = '/home/username/.ssh/id_rsa.pub';
   
// SSH Private Key File
   
private $ssh_auth_priv = '/home/username/.ssh/id_rsa';
   
// SSH Private Key Passphrase (null == no passphrase)
   
private $ssh_auth_pass;
   
// SSH Connection
   
private $connection;
   
    public function
connect() {
        if (!(
$this->connection = ssh2_connect($this->ssh_host, $this->ssh_port))) {
            throw new
Exception('Cannot connect to server');
        }
       
$fingerprint = ssh2_fingerprint($this->connection, SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);
        if (
strcmp($this->ssh_master_fp, $fingerprint) !== 0) {
            throw new
Exception('Unable to verify server identity!');
        }
        if (!
ssh2_auth_pubkey_file($this->connection, $this->ssh_auth_user, $this->ssh_auth_pub, $this->ssh_auth_priv, $this->ssh_auth_pass)) {
            throw new
Exception('Autentication rejected by server');
        }
    }
    public function
exec($cmd) {
        if (!(
$stream = ssh2_exec($this->connection, $cmd))) {
            throw new
Exception('SSH command failed');
        }
       
stream_set_blocking($stream, true);
       
$data = "";
        while (
$buf = fread($stream, 4096)) {
           
$data .= $buf;
        }
       
fclose($stream);
        return
$data;
    }
    public function
disconnect() {
       
$this->exec($this->connection, 'echo "EXITING" && exit;');
       
$this->connection = null;
    }
    public function
__destruct() {
       
$this->disconnect();
    }
}
?>
suri dot suribala dot com 23-Feb-2005 10:00
With Sara's help, I have the following SS2 class that is quite flexible. If anyone improves it, please feel free to let me know.

<?php

// ssh protocols
// note: once openShell method is used, cmdExec does not work

class ssh2 {

  private
$host = 'host';
  private
$user = 'user';
  private
$port = '22';
  private
$password = 'password';
  private
$con = null;
  private
$shell_type = 'xterm';
  private
$shell = null;
  private
$log = '';

  function
__construct($host='', $port=''  ) {

     if(
$host!='' ) $this->host  = $host;
     if(
$port!='' ) $this->port  = $port;

    
$this->con  = ssh2_connect($this->host, $this->port);
     if( !
$this->con ) {
      
$this->log .= "Connection failed !";
     }

  }

  function
authPassword( $user = '', $password = '' ) {

     if(
$user!='' ) $this->user  = $user;
     if(
$password!='' ) $this->password  = $password;

     if( !
ssh2_auth_password( $this->con, $this->user, $this->password ) ) {
      
$this->log .= "Authorization failed !";
     }

  }

  function
openShell( $shell_type = '' ) {

        if (
$shell_type != '' ) $this->shell_type = $shell_type;
   
$this->shell = ssh2_shell( $this->con$this->shell_type );
    if( !
$this->shell ) $this->log .= " Shell connection failed !";

  }

  function
writeShell( $command = '' ) {

   
fwrite($this->shell, $command."\n");

  }

  function
cmdExec( ) {

       
$argc = func_num_args();
       
$argv = func_get_args();

   
$cmd = '';
    for(
$i=0; $i<$argc ; $i++) {
        if(
$i != ($argc-1) ) {
         
$cmd .= $argv[$i]." && ";
        }else{
         
$cmd .= $argv[$i];
        }
    }
    echo
$cmd;

       
$stream = ssh2_exec( $this->con, $cmd );
   
stream_set_blocking( $stream, true );
    return
fread( $stream, 4096 );

  }

  function
getLog() {

     return
$this->log;

  }

}

?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites