ssh 経由でサーバーに接続する必要がありますが、それにアクセスするには、まず別の ssh サーバーに接続する必要があります。それらへの標準的なパスワード アクセスを使用します。
したがって、私の手順は次のとおりです。
ssh root@serverdomain1.com
次に、serverdomain1に接続すると、ターミナルで次のようにします:
ssh myuseraccount@serverdomain2.com
PHPで、ssh2_exec('ssh serverdomain2.com'); を使ってみました。しかし、結果はありません。次に、ss2_tunnel($connection, ...) も試しました。しかし、何も機能しませんでした。
これは機能しません:
$ssh = ssh2_connect('serverdomain1.com', 22);
if (ssh2_auth_password($ssh, $user,$pass)) {
$stream = ssh_exec($ssh, "ssh serverdomain2.com");
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out); // <== doesn't work!!!
}
これも機能しません:
$ssh = ssh2_connect('serverdomain1.com', 22);
if (ssh2_auth_password($ssh, $user,$pass)) {
$tunnel = ssh2_tunnel($ssh, 'serverdomain2.com', 22);
if (!$tunnel) {
echo('no tunnel<br/>');
}
else {
fwrite($tunnel, "echo 1\n");
while (!feof($tunnel)) {
echo fgets($tunnel, 128);
}
}
}
トンネルのエコー結果: 「SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.4 プロトコルが一致しません。」
PHP から SSH2 を使用してそれを行うにはどうすればよいですか?