【问题标题】:Passwordless ssh access to a remote machine using php?使用 php 对远程机器进行无密码 ssh 访问?
【发布时间】:2014-10-03 12:18:45
【问题描述】:

我使用以下 bash 脚本通过无密码 ssh 连接连接到远程私人机器。然后我在那台机器上运行一组命令。

我正在尝试做完全相同的事情,但在使用 PHP 的网页上运行它。我不确定我是从

我确实在 php 中尝试了一些东西,但失败了,很遗憾我不确定如何在 php 中进行无密码 ssh 连接?

ssh -t -o "StrictHostKeyChecking no" -i ~/.ssh/iduser_rsa iduser@10.xxx.22.133 '

echo "hostname" > /tmp/iamhere.txt

cd /opt/im/olywc/bin/
echo "Checking server status:"
sudo ./status.sh
echo ""

ps -ef |grep -i main |grep -v grep
echo ""

echo "End of restart function"

exit
'

将上面的代码转换为 PHP 代码

include('Net/SSH2.php');

$ssh = new Net_SSH2('10.xxx.22.133');
if (!$ssh->login('', '')) {
    exit('Login Failed');
}


function printOutput($str)
{
    echo $str;
}

$ssh->exec('

echo "I am here" > /tmp/iamhere.txt
cd /opt/im/olywc/bin/
echo "Checking server status:"
sudo ./status.sh
echo ""

ps -ef |grep -i main |grep -v grep
echo ""

echo "End of restart function"

exit
'
, 'printOutput');

?>

【问题讨论】:

  • 确保在问题中提出问题!
  • @Scopey有个问题,在第二段。
  • 我建议重新措辞这个问题,这样你的问题就很明显了。它似乎更像是一个以问号结尾的句子,而不是一个实际的问题。不过,我想我明白了您的要求,并在下面提供了答案。
  • 我希望 10.105.22.133 用于说明性示例,因为它在您的修订中仍然可见。
  • 嗨,鲍勃,没错,它是一个虚拟 id,所以没有问题 :-)

标签: php bash ssh phpseclib


【解决方案1】:

phpseclib (http://phpseclib.sourceforge.net/) 是一个维护良好的库。我在使用这个库生成密钥方面有一点经验,但它允许您使用任何常用协议创建简单的 SSH 连接并通过 SSH 连接运行命令。

查看this section 的文档。

【讨论】:

    【解决方案2】:

    看起来您在 CLI 版本的命令中使用了 RSA 密钥身份验证。例如。 ~/.ssh/iduser_rsa。所以试试这个:

    include('Net/SSH2.php');
    include('Crypt/RSA.php');
    
    $rsa = new Crypt_RSA();
    $rsa->loadKey(file_get_contents('/home/user/.ssh/idusa_rsa'));
    
    $ssh = new Net_SSH2('10.xxx.22.133');
    if (!$ssh->login('', $rsa)) {
        exit('Login Failed');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-11
      • 2013-08-17
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 2012-02-23
      • 2018-03-23
      • 1970-01-01
      相关资源
      最近更新 更多