【问题标题】:PHP + SSH How can I fix: "Error: ssh2_connect(): Error starting up SSH connection(-4): Invalid MAC received?"PHP + SSH 如何修复:“错误:ssh2_connect():启动 SSH 连接时出错(-4):收到的 MAC 无效?”
【发布时间】:2013-01-18 00:15:35
【问题描述】:

处理使用 ssh2_connect 从服务器下载文件构建的项目。项目正在运行的生产服务器可以工作,但是让 ssh2_connect 在我运行 OSX 10.8 的 Mac 上工作被证明是有问题的。

以下命令:

ssh2_connect("myhost", 22);

产生以下错误:

Error: ssh2_connect(): Error starting up SSH connection(-4): Invalid MAC received

我可以从命令行连接,所以我知道这不是系统范围的 SSH 问题。有谁知道如何调试或解决这个问题?在此先感谢您,愿您的孩子拥有丰富的大脑和社交技能:)

更新:下面发布的解决方案

【问题讨论】:

  • 您是否尝试过使用 OpenSSL 或类似工具从命令行打开连接?您知道这些凭据实际上会起作用吗?
  • 是的,Sahal,我确实说过“我可以从命令行连接”。谢谢。
  • 我提供的以下链接有帮助吗?
  • 您是否以与命令行用户相同的用户身份执行 PHP?

标签: php ssh libssh2


【解决方案1】:

请参阅下面的链接,该链接解释了所有替代方案

http://kvz.io/blog/2007/07/24/make-ssh-connections-with-php/

【讨论】:

  • 我尝试了 phpseclib,它确实代替了 ssh2_connect。虽然这是一个可行的解决方案,但我确实找到了我将在下面发布的问题的答案。
【解决方案2】:

PHP 文档有一个提供第三个参数的示例。这篇文章的作者http://phing.tigris.org/ds/viewMessage.do?dsForumId=1083&viewType=browseAll&dsMessageId=3022056#messagefocus (Derek Gallo) 遇到了完全相同的问题,他能够为我指明正确的方向。谢谢德里克。似乎某些分布需要额外的参数。最后,我将代码转换为使用 phpseclib,因为它是一个纯 PHP 解决方案,不需要任何特殊模块。

$methods = array(
  'kex' => 'diffie-hellman-group1-sha1',
  'client_to_server' => array(
    'crypt' => '3des-cbc',
    'comp' => 'none'),
  'server_to_client' => array(
    'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
    'comp' => 'none'));

ssh2_connect("myhost", 22, $methods);

【讨论】:

    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2011-01-11
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多