Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHPSeclib的SSH链接(SSH机器1,机器1->;机器2,交互)_Ssh_Chaining_Phpseclib - Fatal编程技术网

使用PHPSeclib的SSH链接(SSH机器1,机器1->;机器2,交互)

使用PHPSeclib的SSH链接(SSH机器1,机器1->;机器2,交互),ssh,chaining,phpseclib,Ssh,Chaining,Phpseclib,我们以前提到过这个话题,但很好奇是否有人有关于这个问题的新信息 我们使用在“管理服务器”后面访问的多个服务器,因此,当我们使用SSH时,我们必须首先登录到那里,然后从那里登录到我们的目标机器,因此始终至少有2个SSH连接。目前,我们在管理服务器上通过使用:使用端口转发,这将直接将我们带到后台感兴趣的服务器,因此我们认为我们直接ssh到每个服务器 这里的问题是,它需要特定的设置,并且在可添加/删除服务器的可扩展环境中,维护非常繁琐。理想情况下,我们可以使用phpseclib将ssh连接到多台机器并

我们以前提到过这个话题,但很好奇是否有人有关于这个问题的新信息

我们使用在“管理服务器”后面访问的多个服务器,因此,当我们使用SSH时,我们必须首先登录到那里,然后从那里登录到我们的目标机器,因此始终至少有2个SSH连接。目前,我们在管理服务器上通过使用:使用端口转发,这将直接将我们带到后台感兴趣的服务器,因此我们认为我们直接ssh到每个服务器

这里的问题是,它需要特定的设置,并且在可添加/删除服务器的可扩展环境中,维护非常繁琐。理想情况下,我们可以使用phpseclib将ssh连接到多台机器并运行命令

有没有人遇到过这种情况,或者从脚本级别对解决方案提出了建议?基本上,我们需要ssh链和ssh到机器1,然后从机器1到机器2,并运行命令/与机器2交互

$ssh = new Net_SSH2('machine1');
$ssh->login('user', 'pass');

$ssh->setTimeout(10);    
$ssh->enablePTY();

$ssh->exec('ssh machine2');
echo $ssh->read();
此时(假设您正在使用RSA身份验证,并且您的私钥位于计算机上的
~/.ssh/id\u RSA
文件中),返回的提示应该是计算机2

您也可以通过以下操作连接到机器3:

$ssh = new Net_SSH2('machine1');
$ssh->login('user', 'pass');

$ssh->setTimeout(10);
$ssh->enablePTY();

$ssh->exec('ssh machine2');
echo $ssh->read();

$ssh->exec('ssh machine3');
echo $ssh->read();
此时(假设您正在使用RSA身份验证,并且您的私钥位于计算机上的
~/.ssh/id\u RSA
文件中),返回的提示应该是计算机2

您也可以通过以下操作连接到机器3:

$ssh = new Net_SSH2('machine1');
$ssh->login('user', 'pass');

$ssh->setTimeout(10);
$ssh->enablePTY();

$ssh->exec('ssh machine2');
echo $ssh->read();

$ssh->exec('ssh machine3');
echo $ssh->read();