Table des matières
1. SSH2模块的安装" >1. SSH2模块的安装
1.1 安装需要的扩展包" >1.1 安装需要的扩展包
1.2 修改php配置信息" >1.2 修改php配置信息
1.3 重启web服务器" >1.3 重启web服务器
1.4 查看是否加载了ssh2" >1.4 查看是否加载了ssh2
2. SSH2模块的连接应用" >2. SSH2模块的连接应用
2.1 用户名与密码" >2.1 用户名与密码
2.2 ssh密钥" >2.2 ssh密钥
3. SSH2模块的具体应用" >3. SSH2模块的具体应用
3.1 实现远程copy文件" >3.1 实现远程copy文件
3.2 执行远程服务器上的命令并取返回值" >3.2 执行远程服务器上的命令并取返回值
附件:测试中应用到的php代码" >附件:测试中应用到的php代码
Maison développement back-end tutoriel php php远路copy以及执行命令

php远路copy以及执行命令

Jun 13, 2016 pm 12:50 PM
connection echo quot ssh stream

php远程copy以及执行命令

php远程copy以及执行命令

php远程copy文件以及在远程服务器中执行命令时,所用到的模块是ssh2,以后所有的操作都依据ssh2连接句柄完成。

1. SSH2模块的安装

1.1 安装需要的扩展包

wget  http://www.libssh2.org/download/libssh2-1.4.2.tar.gz
tar zxf libssh2-1.4.2.tar.gz
cd libssh2-1.4.2
./configure && make && make install
Copier après la connexion

wget  http://pecl.php.net/get/ssh2-0.11.3.tgz
cd ssh2-0.11.3
phpize   (如果报错命令没有找到,apt-get install php5-dev)
./configure ―with-ssh2 && make && make install
Copier après la connexion

1.2 修改php配置信息

cd  /etc/php5/cgi
vim  php.ini
添加项:extension=/usr/lib/php5/20090626/ssh2.so
     ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
Copier après la connexion

cd  /etc/php5/cli
vim  php.ini
添加项:extension=/usr/lib/php5/20090626/ssh2.so
     ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
Copier après la connexion

1.3 重启web服务器

/etc/init.d/lighttpd restart
Copier après la connexion

1.4 查看是否加载了ssh2

[root@localhost ~]php -m | grep ssh2
ssh2
Copier après la connexion

2. SSH2模块的连接应用

SSH2连接有两种方式,分别是用户名密码,ssh密钥形式。

2.1 用户名与密码

$connection = ssh2_connect("192.168.6.222",22);
if (ssh2_auth_password($connection,"veno","ubuntu"))
{
     	 echo "Authentication Successful! ";
}else{
     	 die("Authentication Failed...");
}
Copier après la connexion

2.2 ssh密钥

$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'root',
                          '/root/.ssh/id_rsa.pub',
                          '/root/.ssh/id_rsa'))
{
   echo "Public Key Authentication Successful\n";
} else {
 	 echo ('Public Key Authentication Failed');
}
Copier après la connexion

 

Ps: 密钥生成:

在服务器192.168.6.229上面以root登录

#ssh-keygen
Copier après la connexion

有什么提问基本上回车即可

后成的公钥在~/.ssh/id_rsa.pub

如果想在229通过密钥验证登录到222上面,则把229的公钥id_rsa.pub cp到222上面,先手动登录root,然后运行:

cat id_rsa.pub >> ~/.ssh/authorized_keys
Copier après la connexion

这样就可以在229上面ssh 192.168.6.229不需要输入密码即可登录到222。上面php代码在229上面也可以通过验证。

 

3. SSH2模块的具体应用

通过SSH2验证通过后,得到的连接符为$connection

3.1 实现远程copy文件

远程服务器文件copy到本地:

bool ssh2_scp_recv ( resource $session, string $remote_file, string $local_file )

Ps: 接收文件时,后面文件名可以为空,如:

ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/')
Copier après la connexion


本地文件copy到远程服务器

bool ssh2_scp_send ( resource $session, string $local_file, string $remote_file [, int $create_mode] )

Ps:发送文件时,后面的文件名不能为空,如:

ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
Copier après la connexion

 

3.2 执行远程服务器上的命令并取返回值

resource ssh2_exec( resource $session, string $command [, string $pty [, array $env [, int $width [, int $height [, int $width_height_type]]]]] )

在229上面执行222上的命令具体实例:

$tcmd="cd /home/veno/gateway/radiusclient;";
$tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
$stream = ssh2_exec($connection, $tcmd);
stream_set_blocking($stream,true);
echo stream_get_contents($stream); 
Copier après la connexion

附件:测试中应用到的php代码

<?php echo "是访问到这里来了";
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'root',
                          '/root/.ssh/id_rsa.pub',
                          '/root/.ssh/id_rsa'))
{
  echo "Public Key Authentication Successful\n";
  //$flag=ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/');
  //接收时,后面文件名可以为空
  //$flag=ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
  //发送时,后面的文件名不能为空
  //echo $flag;
  $tcmd="cd /home/veno/gateway/radiusclient;";
  $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
  $stream = ssh2_exec($connection, $tcmd);
  stream_set_blocking($stream,true);
  echo stream_get_contents($stream); 
} else {
  echo ('Public Key Authentication Failed');
}
echo "<br>";
$connection = ssh2_connect('192.168.6.222', 22);
ssh2_auth_password($connection, 'veno', '*******');
$tcmd="cd /home/veno/gateway/radiusclient;";
  $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
  $stream = ssh2_exec($connection, $tcmd);
  echo "<br>";
  echo "-----------------------------------------------";
  stream_set_blocking($stream,true);
  echo stream_get_contents($stream); 
  echo "-----------------------------------------------";
echo "<br>";
Copier après la connexion




Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tutoriel complet Telnet dans Windows 11 [Installation/Activation et dépannage] Tutoriel complet Telnet dans Windows 11 [Installation/Activation et dépannage] May 22, 2023 pm 09:35 PM

&lt;p&gt;Telnet est l'abréviation de « Terminal Network ». Il s'agit d'un protocole que les utilisateurs peuvent utiliser pour connecter un ordinateur à un ordinateur local. &lt;/p&gt;&lt;p&gt;Ici, l'ordinateur local fait référence au périphérique qui initie la connexion, et l'ordinateur connecté à l'ordinateur local est appelé l'ordinateur distant. &lt;/p&gt;&lt;p&gt;Telnet fonctionne sur un principal client/serveur, et bien qu'il soit obsolète, il est encore utilisé par de nombreuses personnes en 2022. De nombreuses personnes sont déjà passées au système d'exploitation Windows 11, qui est le dernier système d'exploitation proposé par Microsoft. &

Programmation serveur Python : utilisation de Paramiko pour implémenter le fonctionnement à distance SSH Programmation serveur Python : utilisation de Paramiko pour implémenter le fonctionnement à distance SSH Jun 18, 2023 pm 01:10 PM

Avec le développement du cloud computing et de l’Internet des objets, l’exploitation à distance des serveurs est devenue de plus en plus importante. En Python, nous pouvons utiliser le module Paramiko pour implémenter facilement des opérations à distance SSH. Dans cet article, nous présenterons l'utilisation de base de Paramiko et comment utiliser Paramiko en Python pour gérer des serveurs à distance. Qu'est-ce que Paramiko Paramiko est un module Python pour SSHv1 et SSHv2 qui peut être utilisé pour connecter et contrôler les clients SSH.

OpenSSH sous Windows : guide d'installation, de configuration et d'utilisation OpenSSH sous Windows : guide d'installation, de configuration et d'utilisation Mar 08, 2024 am 09:31 AM

Pour la plupart des utilisateurs de Windows, le protocole RDP (Remote Desktop Protocol) a toujours été le premier choix pour la gestion à distance car il offre une interface graphique conviviale. Toutefois, pour les administrateurs système qui nécessitent un contrôle plus granulaire, SSH peut mieux répondre à leurs besoins. Grâce à SSH, les administrateurs peuvent interagir avec des appareils distants via la ligne de commande, ce qui peut rendre le travail de gestion plus efficace. L'avantage de SSH réside dans sa sécurité et sa flexibilité, permettant aux administrateurs d'effectuer plus facilement des travaux de gestion et de maintenance à distance, en particulier lorsqu'ils traitent un grand nombre d'appareils ou effectuent des tâches automatisées. Ainsi, même si RDP excelle en termes de convivialité, pour les administrateurs système, SSH est supérieur en termes de puissance et de contrôle. Auparavant, les utilisateurs de Windows devaient emprunter

Que signifie CONNECTION_REFUSED ? Que signifie CONNECTION_REFUSED ? Jul 31, 2023 pm 02:48 PM

CONNECTION_REFUSED est une erreur de connexion réseau qui se produit généralement lors de la tentative de connexion à un serveur distant. Lorsqu'un appareil client tente d'établir une connexion réseau avec un serveur et que le serveur rejette la demande de connexion, une erreur CONNECTION_REFUSED est renvoyée. Les raisons courantes incluent : le serveur n'est pas démarré, le serveur ne peut pas accepter plus de demandes de connexion, le pare-feu du serveur bloque la connexion, etc.

Comment résoudre l'erreur de connexion Comment résoudre l'erreur de connexion Nov 07, 2023 am 10:44 AM

Solution : 1. Vérifiez la connexion réseau ; 2. Vérifiez l'état du serveur ; 3. Effacez le cache et les cookies ; 4. Vérifiez les paramètres du pare-feu et du logiciel de sécurité ; 5. Essayez d'utiliser d'autres réseaux, etc.

Configuration de la confiance mutuelle de connexion Linux SSH Configuration de la confiance mutuelle de connexion Linux SSH Feb 19, 2024 pm 07:48 PM

1. Objectif de la confiance mutuelle ssh 1. La confiance mutuelle SSH est requise lors de la création d'un cluster, ce qui favorise un fonctionnement pratique sur un autre nœud. 2. Lorsque vous utilisez l'opération de copie à distance scp, vous devez saisir le nom d'utilisateur et le mot de passe du serveur cible. À ce stade, vous pouvez configurer la confiance mutuelle SSH entre les serveurs Linux, afin de pouvoir vous connecter sans mot de passe lorsque vous travaillez entre plusieurs. Serveurs Linux. 2. Le principe de configuration de la confiance mutuelle ssh En bref, le serveur stocke le certificat de l'hôte cible afin que l'authentification puisse s'effectuer automatiquement sans saisir de mot de passe. 3. Étapes de configuration de la confiance mutuelle SSH 1. Chaque nœud génère sa propre paire de clés publique et privée. 2. Envoyez votre fichier de clé publique à l'autre partie. 3. Vérifiez si la configuration de la confiance mutuelle réussit. 4. Configurez ici la confiance mutuelle ssh avec MYDB01 et

Comment se connecter à distance à la base de données Mysql en utilisant Python basé sur ssh Comment se connecter à distance à la base de données Mysql en utilisant Python basé sur ssh May 27, 2023 pm 04:07 PM

Contexte Si vous devez accéder à la base de données Mysql d'un serveur distant, mais pendant la période de sécurité de la base de données Mysql, les mesures de sécurité sont définies pour autoriser uniquement les connexions locales (c'est-à-dire que vous devez vous connecter au serveur pour l'utiliser) , et les autres connexions à distance ne sont pas accessibles directement, et le port correspondant a également été modifié, vous devez donc vous connecter à la base de données basée sur ssh. La connexion à la base de données de cette manière est la même que l'interface de Navicat basée sur la connexion ssh. Navicat se connecte à la bibliothèque de support d'installation de la base de données Si vous souhaitez vous connecter à Mysql, vous devez d'abord installer pymysqlpipinstallpymysql pour installer la bibliothèque basée sur ssh sshtunnelpipinstallsshtunnel#.

Installation de CentOS 7.9 et installation de Centos 7.9 ssh Installation de CentOS 7.9 et installation de Centos 7.9 ssh Feb 13, 2024 pm 10:30 PM

CentOS7.9 est une version du système d'exploitation très couramment utilisée lors de la création de serveurs ou de la gestion du système. Cet article vous fournira des étapes et des instructions détaillées pour installer CentOS7.9 et installer SSH. CentOS7.9 est un système d'exploitation Linux gratuit et open source. Il s'agit d'une version compatible binaire basée sur Red Hat Enterprise Linux (RHEL). Voici les étapes pour installer CentOS7.9 : 1. Vous devez télécharger le fichier image ISO. de CentOS7.9 Vous pouvez le télécharger à partir de Téléchargez le dernier fichier image ISO CentOS7.9 sur le site officiel de CentOS. 2. Créez une nouvelle machine virtuelle ou physique sur votre ordinateur et installez

See all articles