当 URL 可在浏览器中访问时,SSH Curl 不起作用

Posted

技术标签:

【中文标题】当 URL 可在浏览器中访问时,SSH Curl 不起作用【英文标题】:SSH Curl doesn't work when URL is accessible in browser 【发布时间】:2019-02-25 18:29:23 【问题描述】:

这篇文章与我的另一篇文章有​​链接(仍未解决):

Laravel - composer update: Connection refused

但我正在另一篇关于更具体问题的帖子。


在 SSH 上,在 prod 服务器(共享主机)上,我转到一个特定文件夹(其中包含我的网站):

$ cd /home/user/www/prod/

那么,如果我尝试:

$ curl https://larapack.io/packages.json

我明白了:

curl: (7) Failed to connect to larapack.io port 443: Connection refused

但如果我这样做:

$ curl https://packagist.org/packages.json

有效。

请注意,这两个文件都可以通过我的浏览器访问。


我在论坛上读过几篇关于 IPv6防火墙 的文章,但是:

不知道会不会导致这种情况 我找不到合适的方法来检查两者是否都被禁用。

编辑:尝试其他事情......


这似乎不是用户代理/引荐来源问题:(尝试在 Windows 10 上使用 chrome 65)

$ curl -A "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/65.0.3315.4Safari/537.36" https://larapack.io/packages.json

curl: (7) Failed to connect to larapack.io port 443: Connection refused

似乎不是 IPV6 问题:(选项 -4 强制使用 IPv4)

$ curl -4 https://larapack.io/packages.json

curl: (7) Failed to connect to larapack.io port 443: Connection refused

似乎不是 ssl 问题:(选项 -k 跳过 ssl 问题)

$ curl -k https://larapack.io/packages.json

curl: (7) Failed to connect to larapack.io port 443: Connection refused

似乎不是防火墙问题:我有一个配置文件,其中包含有效的指令firewall=none


不适用于wget

$ wget https://larapack.io/packages.json

pathconf: Value too large for defined data type
pathconf: Value too large for defined data type--2018-09-23 13:47:26-- https://larapack.io/packages.json
Resolving larapack.io (larapack.io)... 23.92.17.233
Connecting to larapack.io (larapack.io)|23.92.17.233|:443... 
failed: Connection refused.

nc 命令也没有(我没有 telnet 命令,但它的工作原理几乎相同,我可以读到)

$ nc larapack.io 443
larapack.io [23.92.17.233] 443 (https) : Connection refused

我尝试使用 php 进行 curl,它成功了!所以它似乎只有 SSH:

<?php

$url = "https://larapack.io/packages.json";

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url
));
$resp = curl_exec($curl);
curl_close($curl);

echo $resp;

【问题讨论】:

你能远程登录到 url: larapack.io 端口吗?我的意思是telnet larapack.io port 443?输出是什么 我收到-ovh_ssh: telnet: command not found。但是我在共享主机上,所以我不知道我是否可以使用这个命令 @rɑːdʒɑ,我尽我所能编辑了我的帖子 【参考方案1】:

对于在 OVH 使用 SSH 和共享主机专家的法国开发人员,支持人员说像 curl 这样的外部调用在 ssh 中被禁用,但显然我可以做到 curl https://packagist.org/packages.json

当他们自己尝试时,他们收到了类似action forbidden 之类的错误。

没有任何意义。


我通过 composer install 而不是 composer update 解决了我之前的问题。

这里是第一个讨论供参考: Laravel - composer update: Connection refused

【讨论】:

以上是关于当 URL 可在浏览器中访问时,SSH Curl 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

远程 URL 上存在图像,但 curl 给我 404 状态

Chrome 扩展程序可在不同的浏览器中打开特定的 URL [关闭]

当用户中止我的脚本时,cURL会话会发生什么?

我想问下php这个curl为啥耗时特长,我在浏览器直接访问url是有结果的

在尝试访问 HTTPS url 时如何使用 cURL 处理证书?

尝试访问本地文件时,啥会导致 curl 返回 false?