ssh - PhpStorm ssh 隧道到远程服务器 - 在远程服务器上需要配置什么?

标签 ssh phpstorm xdebug ssh-tunnel

我已经为此苦苦挣扎了几个星期。我放弃了,成功连接到本地虚拟机,但是太慢了。我必须连接到这台远程计算机,即使它会杀死我。

我的 Windows 8.1 机器上有 PhpStorm 9.0.2,尝试使用 PuTTY 连接到另一个位置的远程 CentOS 6、PHP 5.6/xdebug 2.3.2 机器。我位于防火墙后面,但我不认为这是问题,因为我可以毫无问题地通过 SSH 连接,因此如果我可以正确配置隧道,隧道应该可以工作。我认为唯一的问题是我太笨了,无法弄清楚如何正确地挖掘隧道。

远程服务器的 xdebug 如何知道要建立隧道?或者说有必要知道吗?我需要告诉服务器有关隧道的信息吗?或者当我通过隧道连接时它是否已经意识到了这一点?但如果知道,那么为什么 xdebug 无法连接到端口 9000?我的 PhpStorm 是否监听端口 9000,而我的 PuTTY 是否处理在那里发送数据?或者PhpStorm需要监听22端口吗?

This tutorial我发现解释如何通过 SSH 隧道将 PhpStorm 与远程服务器一起使用不起作用(单击展开“在 Windows 上设置 SSH 隧道”部分)。在我的远程测试服务器(我的 PHP/MySQL 所在的 CentOS Linux 机器)上进行 Xdebug基于开发网站正在运行,无法通过端口 9000 连接到我的本地 Windows 8.1 开发计算机。

我并不完全理解隧道,也许我永远不会,因为我花了几个小时研究它,但还没有掌握它。我只想调试我的应用程序。 :(

本教程指导您使用 Putty 打开到远程服务器的 SSH 连接,并配置连接的“隧道”部分以指定远程主机上的端口 9000 和 localhost:9000适用于您的本地开发机器。我已经这样做了一次又一次,但似乎没有人告诉我的远程服务器该怎么做。

这是我的腻子设置:

PuTTY configuration 1 (fake ip address) PuTTY configuration 2 - the TUNNEL

XDebug 日志不断显示连接失败。

I: Checking remote connect back address.
I: Remote address found, connecting to 173.12.34.123:9000.
E: Time-out connecting to client. :-(
Log closed at 2015-10-28 19:31:55

如何判断远程 XDebug 是否正在尝试通过端口 9000 直接连接到我的服务器,或者是否正在通过端口 22 使用隧道

通过 SSH 连接哪个用户有关系吗? root 还是其他用户?如果我有另一个未通过隧道连接的 SSH session 同时连接到同一服务器,这有什么关系吗?

编辑:这是我的 xdebug 设置,由 phpinfo() 输出。它们反射(reflect)了我当前网站根目录 (/home/testingsite/public_html/php.ini) 的 php.ini。 请注意,xdebug.remote_log 保存在 /home/testingsite/public_html/var/xdebug/log.txt

xdebug

xdebug support  enabled
Version 2.3.2
IDE Key PHPSTORM

Supported protocols Revision
DBGp - Common DeBuGger Protocol $Revision: 1.145 $

Directive   Local Value Master Value
xdebug.auto_trace   Off Off
xdebug.cli_color    0   0
xdebug.collect_assignments  Off Off
xdebug.collect_includes On  On
xdebug.collect_params   0   0
xdebug.collect_return   Off Off
xdebug.collect_vars Off Off
xdebug.coverage_enable  On  On
xdebug.default_enable   On  On
xdebug.dump.COOKIE  no value    no value
xdebug.dump.ENV no value    no value
xdebug.dump.FILES   no value    no value
xdebug.dump.GET no value    no value
xdebug.dump.POST    no value    no value
xdebug.dump.REQUEST no value    no value
xdebug.dump.SERVER  no value    no value
xdebug.dump.SESSION no value    no value
xdebug.dump_globals On  On
xdebug.dump_once    On  On
xdebug.dump_undefined   Off Off
xdebug.extended_info    On  On
xdebug.file_link_format no value    no value
xdebug.force_display_errors Off Off
xdebug.force_error_reporting    0   0
xdebug.halt_level   0   0
xdebug.idekey   PHPSTORM    PHPSTORM
xdebug.max_nesting_level    256 256
xdebug.max_stack_frames -1  -1
xdebug.overload_var_dump    On  On
xdebug.profiler_aggregate   Off Off
xdebug.profiler_append  Off Off
xdebug.profiler_enable  On  On
xdebug.profiler_enable_trigger  On  On
xdebug.profiler_enable_trigger_value    no value    no value
xdebug.profiler_output_dir  var/xdebug/profiles/    var/xdebug/profiles/
xdebug.profiler_output_name cachegrind.out.%p   cachegrind.out.%p
xdebug.remote_autostart Off Off
xdebug.remote_connect_back  On  On
xdebug.remote_cookie_expire_time    3600    3600
xdebug.remote_enable    On  On
xdebug.remote_handler   dbgp    dbgp
xdebug.remote_host  localhost   localhost
xdebug.remote_log   var/xdebug/log.txt  var/xdebug/log.txt
xdebug.remote_mode  req req
xdebug.remote_port  9000    9000
xdebug.scream   Off Off
xdebug.show_exception_trace Off Off
xdebug.show_local_vars  On  On
xdebug.show_mem_delta   Off Off
xdebug.trace_enable_trigger Off Off
xdebug.trace_enable_trigger_value   no value    no value
xdebug.trace_format 0   0
xdebug.trace_options    0   0
xdebug.trace_output_dir /tmp    /tmp
xdebug.trace_output_name    trace.%c    trace.%c
xdebug.var_display_max_children 128 128
xdebug.var_display_max_data 512 512
xdebug.var_display_max_depth    3   3

最佳答案

根据您的 xdebug 日志,您的设置有错误,而不是 SSH。

根据 phpinfo() 的 xdebug 部分,您需要设置 xdebug.remote_connect_back = 0 (或 off - 相同意义)。还要确保xdebug.remote_host = localhost

使用您当前的设置,xdebug 尝试连接回请求来源的 IP 上的 TCP 9000,而要使 SSH 隧道工作,您需要它连接到本地 TCP 9000(并且 SSH 会将此类连接绕过隧道返回到您的本地计算机)防火墙/路由器)。

关于ssh - PhpStorm ssh 隧道到远程服务器 - 在远程服务器上需要配置什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33400676/

相关文章:

c - Libssh - SSH MESSAGE 未实现

ssh - 如果我们更改 SSH 端口,如何拥有一个幂等的 Ansible 剧本?

ruby-on-rails - rails ssh 密码安全性

laravel - 如何使用 Laradock 和 PhpStorm 配置 Xdebug

bash - 从 ssh session 中检测 user@hostname

phpstorm - PHPStorm-在现有文件上运行Filewatcher?

Phpstorm 行号列宽

PhpStorm Xdebug 过早退出方法

php - Xdebug成功连接到DBGP客户端,但不会在断点处停止

php - Visual Studio Code 不会在 PHP Xdebug 中的断点处停止