即使使用stream_set_blocking,空的php ssh2流内容也可以?
我正在使用使用PECL SSH2扩展程序从远程主机读取iPtables配置的工具.我能够成功地将连接到主机,身份验证和执行命令.我遇到的麻烦有时是流不包含任何数据. /** * Load the current firewall configuration * @return bool */ public function loadRules() { $stream = ssh2_exec($this->connection,"~/iptsave;"); stream_set_blocking($stream,true); $iptablesSave = stream_get_contents($stream); if(empty($iptablesSave)) { return false; } parent::restore($iptablesSave); return true; } 大约有25%的时间,loadRu
0 2023-05-31
编程技术问答社区
通过SSH将MySQL绑定到本地端口--在控制台工作,在Mac OSX中不能通过PHP shell_exec()工作
我正在运行OSX 10.6.7,并尝试通过SSH连接到远程MySQL Server以运行一些PHP脚本.目前,我毫无问题地运行以下命令: ssh -i /Users/xxxx/key.pem user@data.server.com -L 53306:localhost:3306 -f sleep 60 >> logfile mysql -u user -p -h 127.0.0.1 -P 53306 我使用密码进行身份验证后,它可以很好地工作. (当然,只要在睡眠超时之前.) 当我运行此PHP脚本时,... $shell = shell_exec("ssh -i /Users/xxxx/key1.pem user@data.server.com -L 53306:localhost:3306 -f sleep 60 >> logfile"); $mysqli = mysqli_connect('127.0.0.1', 'user', 'password', 'd
0 2023-05-31
编程技术问答社区
如何在PHP中安全地保持持续的SSH连接?
我目前正在使用使用主奴隶模型的VPS面板.一台主服务器运行一个用PHP编写的面板,并通过SSH管理多个从服务器.从从有限的帐户访问从属服务器,该帐户可以向特定的服务器管理相关命令进行Sudo,并且所有交互均以该帐户本身无法访问的目录记录. 我目前正在使用php-ssh2,但是这种方法有一些问题: 退出代码不会可靠地返回,因此所有命令都必须在包装脚本中执行,该包装脚本将stdout,stderr和退出代码打包到JSON对象中,并通过STDOUT将其返回.此脚本必须在每个从服务器上都存在. PHP-SSH2库不知道"自定义连接超时"的概念,这意味着我必须在尝试使用php-ssh2进行连接之前,必须用fsockopen探测服务器 - 如果我不这样做,无法到达的服务器可能会延迟一分钟或更长时间的pageload.由于下一个问题,这甚至更糟. 持续连接是不可能的.这会导致面板中绝对荒谬的pageload时间,尤其是与超时的上一期相结合的. 现在,我正在尝试主要解决最后一个问题
0 2023-05-31
编程技术问答社区
使用rsync从php脚本中同步本地和远程文件夹,无需输入密码
如何使用php脚本内部的rsync同步本地和远程文件夹而无需提示键入密码? 我已经设置了一个公共密钥来自动为我的用户自动登录. 因此,这是在CLI中没有任何问题的运行: rsync -r -a -v -e "ssh -l user" --delete ~/local/file 111.111.11.111:~/remote/; 但是,当我尝试从php脚本运行相同时(在本地服务器中的网页上): $c='rsync -r -a -v -e "ssh -l user" --delete ~/local/file 111.111.11.111:~/remote/'; //exec($c,$data); passthru($c,$data); print_r($data); 这就是我收到的: 255 ,没有将文件从本地服务器上传到远程服务器. 在网上搜索"您可以在此处使用bash的组合并期望壳代码,但这不是很安全,因为这会自动化根登录.为nobody
4 2023-05-31
编程技术问答社区
流浪家园慢
我有一台基于Laravel Homestead的Vagrant服务器,用于在大部分时间内在本地测试我的Laravel站点.但是,最近,我一直在遇到问题,它只会停止几分钟(典型)到几个小时(稀有).每15分钟左右发生一次.到我在SSH连接中打字的地步,它将停止.然后,当我几分钟后检查回来时,我现在打字的内容就在那里.这不仅仅是SSH和页面停止加载,还有包括Rsync甚至Halt Fafer在内的Vagrant命令. 这是Vanilla Homestead,除了我更改了映射是通过Rsync(手动,我在要更新服务器时运行rsync命令).之所以这样做是因为我在网页上获得了30秒左右的加载时间,并且在研究之后并尝试了Rsync,这对此非常有帮助.另外,我已经(由于问题以来)尝试使其访问所有4个CPU.如果这很重要,我将在MacBook Air 2013上运行.在过去的两个月中,它一直运行良好. Vagrant服务器运行2048MB的内存,我免费提供15GB的磁盘空间. 这是一个非常令
0 2023-05-31
编程技术问答社区
JavaScript(或JS+PHP)终端客户端
有人知道基于JS的终端客户端吗?使用远程主机启动SSH连接的内容,或者只是与远程PHP脚本通信以执行命令并检索输出的内容.这样的东西存在吗? 解决方案 检查 anyterm ,它使用xmlhttprequest频道与使用伪终端的守护程序通信与外壳或其他应用程序进行通信. 其他解决方案 http://www.masswerk.at/termlib/看起来很有趣基础. 其他解决方案 http://sourceforge.net/projects/projects/jsterminal ,但是您必须编写自己的命令才能与主机连接
0 2023-05-31
编程技术问答社区
编译器下载私人GitHub存储库
我不能下载与作曲家的github私人存储库 php composer.phar update 我得到以下错误 " 但我可以轻松地使用git clone 下载这些私人存储库 composer.json "repositories": [ { "type": "vcs", "url": "git@github.com:company/private1.git", "options": { "ssh2": { "username": "githubusername", "pubkey_file": "/home/username/.ssh/id_rsa.pub", "privkey_file": "/home/username/.ssh/id_rsa" }
0 2023-05-30
编程技术问答社区
无法杀死PHP脚本
我正在namecheap共享服务器上开发一些PHP脚本.我不小心进行了一个循环,似乎无限期地进行(或很长一段时间),所以现在我试图使用SSH杀死它. 我已经查看了使用top的运行过程列表,找到了不当行为的PHP脚本,并试图用kill杀死它.但是,在使用此命令杀死它之后,当我尝试使用ps时,它仍在运行! ps的结果: PID TTY STAT TIME COMMAND 819520 ? S 0:00 /usr/bin/php /my/php/file.php 我尝试一遍又一遍地杀死该过程,但它不会死! SSH是有限的,因此我不能使用killall之类的命令.我该怎么办?! 解决方案 要杀死该过程,您可以执行以下操作: 用ps -ef 获得PID 用kill -9 杀死它 一个不错的参考:我什么时候应该使用kill -9? 只是为了娱乐,一个例子: $ sleep 100
0 2023-05-30
编程技术问答社区
用SSH2_SCP_SEND()发送的文件在远程服务器上不完整
i带有PHP和SSH2的文件传输到远程服务器. 我使用此: $connection = ssh2_connect('shell.example.com', 22); ssh2_auth_password($connection, 'username', 'password'); ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644); ,但有时远程服务器上的文件不完整.我假设SSH2不会转移EOF或其他任何内容. 您有任何想法或解决方案吗? 解决方案 问题是您不会关闭SSH会话.因此,内部缓冲区不会冲洗,并且文件未完全写给磁盘. 这是一个解决方法 - 只需与: 关闭会话 ssh2_exec($connection, 'exit'); 这将导致所有缓冲区被冲洗,并且您的文件应完全传输. 希望,这会有所帮助.
0 2023-05-30
编程技术问答社区
尝试使用ssh2_auth_pubkey_file()连接
我正在尝试制作一个在终端上运行的PHP脚本,该脚本将通过SSH连接到远程服务器并检索文件.到目前为止,这是我的代码 #!/usr/bin/php -q 'ssh-rsa')); $methods = ssh2_auth_pubkey_file($connection, 'remoteuser', $cwd.'ssh/id_rsa.pub', $cwd.'ssh/id_rsa', "it's an inception"); var_dump($methods); //ss
0 2023-05-30
编程技术问答社区
通过PHP在远程机器上执行命令
为我的环境提供背景: 我有3台A,B&C a = Web服务器,运行一个PHP网站,该网站基本上充当B&C 的接口 b = linux ubuntu计算机,我有root访问,ssh和通过SSH客户端在计算机上工作的所有必要好处(我有一个.ppk私有密钥文件) c = MySQL数据库服务器在Linux上运行 我可以从C(mySQL)上的A(php)成功执行查询并返回结果.但是现在我试图从a. 上执行B上的Linux命令 例如 我有一个在B上运行的脚本,并且想从A(PHP)执行命令以显示脚本的状态. 在命令行中执行此操作很容易 - ./somescript状态 ,但我想在网站上显示该脚本的状态,即IM在服务器上托管A. 甚至只需检查服务器上的服务器B的正常运行时间. 无论如何,这是可能的.我已经看起来像看起来永远谷歌搜索过,但是我没有到任何地方,如果连接是否安全,我不会分阶段,因为这是一个封闭的网络,没有外部访问此网络. 任何
2 2023-05-30
编程技术问答社区
即使关闭SSH终端后,如何使Websocket服务器保持运行?
因此,我正在使用php的棘轮,目前已将成功的Websocket上传到我的服务器. 我去SSH后起作用,然后手动运行" PHP bin/chat-server.php". 我想知道的是,在商业情况下,如何保持聊天服务器的运行? 谢谢. 解决方案 做一个守护程序. 如果您使用的是Symfony2,则可以使用 process component . // in your server start command $process = new Process('/usr/bin/php bin/chat-server.php'); $process->start(); sleep(1); if ($process->isRunning()) { echo "Server started.\n"; } else { echo $process->getErrorOutput(); } // in your server stop comman
2 2023-05-30
编程技术问答社区
如何使用phpStorm从远程服务器上删除文件
因此,我已经将远程服务器添加到phpstrom中,可以更改那里的文件. 但是,如果我删除文件,它们只会从我的计算机中消失,而不是在服务器上消失. 如何使用phpstorm从远程服务器删除文件? 解决方案 to 手动从远程位置删除文件 - 使用远程主机工具窗口(或Tools | Deployment | Browse Remote Host如果不可见) - 导航并删除任何您想要的文件. 要使您的远程主机与本地同步(即,在删除本地时删除远程文件),您需要在Settings | Deployment | Options中启用自动上传,特别是: 上传的项目自动更改为默认服务器 删除目标项目时 显然,您需要将所有这些选项配置为最适合您的工作流程.
0 2023-05-30
编程技术问答社区
ssh2_auth_pubkey_file认证总是失败
我正在尝试使用PHP的SSH2功能连接到另一台计算机.我知道SSH键是在没有密码的情况下创建的,并且可以正确分发,我可以在机器上的终端中ssh user@host到服务器. PHP函数试图使用SSH键文件连接到IP地址: - function minnerConnect($miner_serial) { $port = '7822'; $miner_ip = $this->getMinerIp($miner_serial); $methods = array( 'kex' => 'diffie-hellman-group1-sha1', 'hostkey' => 'ssh-dss', 'client_to_server' => array( 'crypt' => '3des-cbc', 'mac' => 'hmac-md5',
0 2023-05-30
编程技术问答社区
如何通过SSH运行PHP脚本?
我有一个相当长的PHP脚本,每当我的Internet连接跳出一秒钟时,浏览器似乎会停止脚本.我不能坐了8个小时让我的脚本运行,所以我认为我可以通过SSH运行它,然后第二天回来并获取输出文件.无论将脚本名称键入SSH多么简单,似乎不起作用.是否有特殊命令可以通过SSH运行PHP脚本? 解决方案 如果您的Internet连接掉落了,那么这也可能是SSH的问题,好吧,让SSH窗口打开并不总是最好的事情(如果您会发生什么情况意外关闭SSH窗口?) 我建议进入服务器,然后运行一个名为" screen et "的程序,即使您的连接下降,也会继续运行您在其中运行的任何操作. 要执行此操作,首先进入服务器,然后键入 screen 这将加载屏幕,点击输入以绕过欢迎屏幕 现在,运行您的PHP脚本 php /path/to/your/php/script.php 这将开始运行php, 您现在可以在窗口上关闭窗口,并且脚本将继续运行 要返回您的屏幕会
0 2023-05-30
编程技术问答社区
安装PHP的PECL SSH2扩展
我正在尝试安装 http://fr2.php.net/manual/manual/enual/en/book.ssh2. php 在Centos 5(rhel 5的叉子)上. 我安装了位于/usr/lib中的libssh2(yum install libssh2),当我安装ssh2扩展名(通过pecl install -f ssh2)时,我会得到此消息 检查默认路径中的SSH2文件...找不到 配置:错误:未找到所需的LIBSSH2库.您可以从 如果我设置/usr/lib,我会收到相同的消息 错误:`/tmp/pear/download/ssh2-0.11.0/configure -with-ssh2 =/usr/lib'失败 问题在哪里? 解决方案 通过tar.gz通过但是: yum install libssh2-devel ...是一个更好的主意. 其他解决方案 $ sudo pecl channel-update pecl.ph
2 2023-05-30
编程技术问答社区
与SSH2_Connect()断开连接
我已经使用ssh2_connect通过ssh2连接到服务器,但是我看不到任何方法在manpages 我应该如何结束连接. 我并不是等待脚本在断开连接之前结束的粉丝. 我可以使用fclose吗?听起来不正确... 解决方案 只是 unset($connection) 您的连接变量或ssh2_exec($connection, 'exit');可能会这样做. 您可能会执行以下操作以使其更具说服力! ssh2_exec($connection, 'exit'); unset($connection); 其他解决方案 如果您正在使用 phpseclib "> phpseclib,纯PHP SSH实现,您可以做$ssh->disconnect() . phpseclib的destructor称之为它,但您也可以手动称呼它. 其他解决方案 ssh2_exec('logout')应该杀死您的会话…
0 2023-05-30
编程技术问答社区
如何通过ssh检查ubuntu服务器上是否有php和apache?
如何通过SSH在Ubuntu Server上使用PHP和MySQL检查Apache? 也安装了该目录? 如果安装了其他一些软件包,例如LightTPD,那就是 解决方案 类型aptitude启动软件包管理器.在那里您可以看到安装了哪些应用程序. 使用/搜索软件包.尝试搜索apache2和php5(或您要使用的任何版本).如果安装它们,它们应该是大胆的,并且在它们的前面有一个i.如果它们未安装(p在生产线的前面),并且您想安装它们(并且具有根本权限),请使用+选择它们,然后使用g(两次)安装. 警告词:在这样做之前,快速查看网络上的某些 aptitude 教程可能是明智的. 其他解决方案 通过使用which命令,找出是否安装程序的另一种方法.它将显示您要搜索的程序的路径.例如,如果您在搜索Apache时,可以使用以下命令: $ which apache2ctl /usr/sbin/apache2ctl ,如果您搜索PHP,请尝试以下操作:
2 2023-05-30
编程技术问答社区
通过php非常慢地将文件传输以供通过SFTP下载
我希望能够从服务器通过SFTP获取文件,以便我的Web服务器允许用户以后下载它.为此,我正在使用 phpseclib 库.不幸的是,这确实很慢,因为当直接从托管原始文件的服务器下载之前,我只能达到300-350kb/s的速度.由于我们公司的某些内部原因,我们必须在仅打开端口22的另一台服务器上重置这些文件,因此,当用户使用以下链接时:http://my.website.com/some/path/getfile/getfile.php?filename=someFileName.extension我的PHP脚本通过SSH连接到托管的服务器文件,然后将指定的文件下载到php://output流以供用户下载它. 这是我的PHP脚本: error_reporting(E_ERROR); include('Net/SFTP.php'); include('Crypt/RSA.php'); if (!isset($_GET['filename'])) die(); # Th
0 2023-05-29
编程技术问答社区
为什么SSH命令通过腻子的工作与PHP的Phpseclib不同?
我正在编写一个脚本以使我的Windows Development PC自动部署到共享托管服务器. 我的结果不同,具体取决于我是通过Putty还是PHP 执行命令(均在PC上运行). 在PUTTY中,当我通过SSH登录服务器时,我可以运行命令: cd /www/ ls -la #outputs contents of /www 但是,当我通过phpseclib的php做到这一点时,如下所示,任何cd命令都被完全忽略: login('mydomain.com', 'mypassword')) { trigger_error("Login Failed", E_ERROR); } echo $ssh->exec
6 2023-05-29
编程技术问答社区