我已经使用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。
如果有人在此之前做过这件事,请解决这个问题....
答案 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