ssh2://

ssh2://Secure Shell 2

Description

ssh2.shell://ssh2.exec://ssh2.tunnel://ssh2.sftp://ssh2.scp:// (PECL)

Note: This wrapper is not enabled by default
In order to use the ssh2.*:// wrappers, the » SSH2 extension available from » PECL must be installed.

In addition to accepting traditional URI login details, the ssh2 wrappers will also reuse open connections by passing the connection resource in the host portion of the URL.

Usage

  • 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

Options

Wrapper Summary
Attributessh2.shellssh2.execssh2.tunnelssh2.sftpssh2.scp
Restricted by allow_url_fopenYesYesYesYesYes
Allows ReadingYesYesYesYesYes
Allows WritingYesYesYesYesNo
Allows AppendingNoNoNoYes (When supported by server)No
Allows Simultaneous Reading and WritingYesYesYesYesNo
Supports stat()NoNoNoYesNo
Supports unlink()NoNoNoYesNo
Supports rename()NoNoNoYesNo
Supports mkdir()NoNoNoYesNo
Supports rmdir()NoNoNoYesNo

Context options
NameUsageDefault
sessionPreconnected ssh2 resource to be reused 
sftpPreallocated sftp resource to be reused 
methodsKey exchange, hostkey, cipher, compression, and MAC methods to use 
callbacks  
usernameUsername to connect as 
passwordPassword to use with password authentication 
pubkey_fileName of public key file to use for authentication 
privkey_fileName of private key file to use for authentication 
envAssociate array of environment variables to set 
termTerminal emulation type to request when allocating a pty 
term_widthWidth of terminal requested when allocating a pty 
term_heightHeight of terminal requested when allocating a pty 
term_unitsUnits to use with term_width and term_heightSSH2_TERM_UNIT_CHARS

Examples

Example #1 Opening a stream from an active connection

<?php
$session
= ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
'/home/username/.ssh/id_rsa', 'secret');
$stream = fopen("ssh2.tunnel://$session/remote.example.com:1234", 'r');
?>

Example #2 This $session variable must be kept available!

In order to use the ssh2.*://$session wrappers, the $session resource variable must be kept. The code below will not have the desired effect:

<?php
$session
= ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
'/home/username/.ssh/id_rsa', 'secret');
$connection_string = "ssh2.sftp://$session/";
unset(
$session);
$stream = fopen($connection_string . "path/to/file", 'r');
?>

unset() closes the session, because $connection_string does not hold a reference to the $session variable, just a string cast derived from it. This also happens when the unset() is implicit because of leaving scope (like in a function).

To Top