远程连接从ssh2_exec到另一个远程并访问新连接的shell

时间:2016-06-29 10:38:42

标签: php shell ssh2-exec

我已经使用ssh2-connect连接到远程服务器,我正在使用 ssh2 _exec来运行此命令"sshpass -p 'xxxx1248' ssh XX@1x2.1xx.3x.xx ",现在如果我连接到新的远程服务器我想要访问他们的shell。 我有一个任务是在第二个远程服务器上运行命令。 我该怎么办?

$connection = ssh2_connect($sIP, $iPort);

$autherised = ssh2_auth_password($connection, $sUserName, $sPassword);
$oResult = ssh2_exec($connection, "sshpass -p 'xxxx1248' ssh XX@1x2.1xx.3x.xx");

如何访问IP 1x2.1xx.3x.xx的shell。

如果有人在此之前做过这件事,请解决这个问题....

1 个答案:

答案 0 :(得分:0)

我将提供一个代码片段来运行" ls"目标机器上的命令。如果这是你想要的,请告诉我。

$conn = ssh2_connect($host, $port);
ssh2_auth_password($conn, $user, $pass);
// runs the ls -al command on $targetHost
$stream = ssh2_exec($conn,
    "sshpass -p '{$passTarget}' ssh $targetUser@$targetHost ls -al"
);

// retrieving the data
stream_set_blocking($stream, true);
$output = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);

echo stream_get_contents($output);

此代码输出$targetHost计算机上的目录列表。

我希望这会有所帮助。

编辑:

我将在此处添加一个示例:

在我的目标计算机上,我创建了一个小的bash脚本test.sh

export TEST_VAR=1

然后我将ssh2_exec行更改为:

$stream = ssh2_exec($conn,
    "sshpass -p '{$passTarget}' ssh $targetUser@$targetHost 'source test.sh; echo \$TEST_VAR'"
);

我得到了预期的结果:1