diff --git a/.travis.yml b/.travis.yml index f5c96a8f..03485d1b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,6 +20,7 @@ env: before_install: true install: + - eval `ssh-agent -s` - travis/setup-secure-shell.sh - sh -c "if [ '$TRAVIS_PHP_VERSION' != 'hhvm' ]; then travis/install-php-extensions.sh; fi" - sh -c "if [ '$TRAVIS_PHP_VERSION' != '5.2' ]; then travis/setup-composer.sh; fi" diff --git a/tests/Functional/Net/SSH2AgentTest.php b/tests/Functional/Net/SSH2AgentTest.php new file mode 100644 index 00000000..d92bb705 --- /dev/null +++ b/tests/Functional/Net/SSH2AgentTest.php @@ -0,0 +1,31 @@ + + * @copyright 2014 Andreas Fischer + * @license http://www.opensource.org/licenses/mit-license.html MIT License + */ + +class Functional_Net_SSH2AgentTest extends PhpseclibFunctionalTestCase +{ + public static function setUpBeforeClass() + { + if (!isset($_SERVER['SSH_AUTH_SOCK'])) { + self::markTestSkipped( + 'This test requires an SSH Agent (SSH_AUTH_SOCK env variable).' + ); + } + parent::setUpBeforeClass(); + } + + public function testAgentLogin() + { + $ssh = new Net_SSH2($this->getEnv('SSH_HOSTNAME')); + $agent = new System_SSH_Agent; + + $this->assertTrue( + $ssh->login($this->getEnv('SSH_USERNAME'), $agent), + 'SSH2 login using Agent failed.' + ); + } +} diff --git a/travis/setup-secure-shell.sh b/travis/setup-secure-shell.sh index 8dd4e35f..fdcaaa0d 100755 --- a/travis/setup-secure-shell.sh +++ b/travis/setup-secure-shell.sh @@ -13,5 +13,19 @@ set -x USERNAME='phpseclib' PASSWORD='EePoov8po1aethu2kied1ne0' +# Create phpseclib user and home directory sudo useradd --create-home --base-dir /home "$USERNAME" + +# Set phpseclib user password echo "$USERNAME:$PASSWORD" | sudo chpasswd + +# Create a 1024 bit RSA SSH key pair without passphrase for the travis user +ssh-keygen -t rsa -b 1024 -f "$HOME/.ssh/id_rsa" -q -N "" + +# Add the generated private key to SSH agent of travis user +ssh-add "$HOME/.ssh/id_rsa" + +# Allow the private key of the travis user to log in as phpseclib user +sudo mkdir -p "/home/$USERNAME/.ssh/" +sudo cp "$HOME/.ssh/id_rsa.pub" "/home/$USERNAME/.ssh/authorized_keys" +sudo chown "$USERNAME:$USERNAME" "/home/$USERNAME/.ssh/" -R