Maison >développement back-end >tutoriel php >PHP Master | Utilisation de SSH et SFTP avec PHP
Points de base
ssh2_auth_password()
et ssh2_auth_pubkey_file()
Renvoie une valeur booléenne indiquant si l'authentification est réussie. Dans le monde d'aujourd'hui, l'intégration des tiers et le partage de contenu sont très courants, il est donc crucial de comprendre et d'utiliser des protocoles tels que SCP et SFTP. L'extension SSH2 de PHP (un wrapper pour LiBSSH2, implémentant le protocole SSH2) fournit plusieurs fonctions qui peuvent être utilisées pour transférer des fichiers en toute sécurité. Pour commencer avec ces fonctions, vous devez évidemment installer le package SSH2. Puisqu'il s'agit d'une extension PECL, le processus d'installation dépendra du système d'exploitation que vous choisissez. Veuillez suivre le guide sur php.net.
Créer une connexion
Commençons par vous connecter au service SSH. Il est très simple d'établir une connexion:
<code class="language-php"><?php $conn = ssh2_connect('example.com', 22); ssh2_auth_password($conn, 'username', 'password'); ?></code>
Certains administrateurs préfèrent utiliser des clés publiques et privées pour vérifier les connexions. Si le service est configuré et que vous souhaitez vous connecter de cette façon, vous devez plutôt utiliser la méthode suivante:
<code class="language-php"><?php $conn = ssh2_connect('example.com', 22); ssh2_auth_pubkey_file( $conn, 'username', '/home/username/.ssh/id_rsa.pub', '/home/username/.ssh/id_rsa' ); ?></code>
Que vous utilisiez le nom d'utilisateur / mot de passe ou l'authentification de la clé publique / privée, ssh2_auth_password()
et ssh2_auth_pubkey_file()
renvoyez une valeur booléenne indiquant si l'authentification est réussie.
Exécuter les commandes de base
Après avoir réussi à vérifier l'identité du serveur, vous pouvez effectuer des opérations de transfert de fichiers. La fonction SCP vous permet d'envoyer ou de recevoir des fichiers comme ceci:
<code class="language-php"><?php // 发送文件 ssh2_scp_send($conn, '/local/filename', '/remote/filename', 0644); // 获取文件 ssh2_scp_recv($conn, '/remote/filename', '/local/filename'); ?></code>
ssh2_scp_send()
Il existe également un paramètre supplémentaire que vous pouvez spécifier les autorisations de fichiers lors de la copie de fichiers sur le serveur distant. La fonction SFTP fournit plus de fonctions; Ils fonctionnent de manière très similaire aux fonctions SCP ci-dessus, mais avant d'utiliser ces fonctions, des connexions supplémentaires doivent être effectuées via ssh2_sftp()
:
<code class="language-php"><?php $sftp = ssh2_sftp($conn); // 创建一个新文件夹 ssh2_sftp_mkdir($sftp, '/home/username/newdir'); // 重命名文件夹 ssh2_sftp_rename($sftp, '/home/username/newdir', '/home/username/newnamedir'); // 删除新文件夹 ssh2_sftp_rmdir($sftp, '/home/username/newnamedir'); // 创建符号链接 ssh2_sftp_symlink($sftp, '/home/username/myfile', '/var/www/myfile'); // 删除文件 ssh2_sftp_unlink($sftp, '/home/username/myfile'); ?></code>
ssh2_sftp()
accepte la ressource de connexion et renvoie une ressource SFTP pour les appels futurs ssh2_sftp_*
. Ces appels renvoient ensuite une valeur booléenne, vous permettant de déterminer si l'opération réussit.
en utilisant la fonction d'emballage
Lorsqu'il n'y a pas de fonction de gestion de fichiers spécifique dans SFTP ou SCP, vous pouvez généralement utiliser un wrapper de flux pour utiliser la fonction du système de fichiers de base. Voici quelques exemples:
<code class="language-php"><?php $conn = ssh2_connect('example.com', 22); ssh2_auth_password($conn, 'username', 'password'); ?></code>
Avant d'effectuer l'un de ces appels, vous devez vous connecter au serveur SSH et SFTP car il utilise la variable $sftp
précédemment créée.
Intégrer tous les contenus
Maintenant que vous pouvez connecter, vérifier l'identité et exécuter les commandes sur un serveur SSH, nous pouvons créer des classes auxiliaires pour simplifier l'exécution de ces commandes: une classe pour exécuter des appels SCP et une classe pour les appels SFTP, une classe pour Exécution des appels SSH, des classes parentales pour les fonctions communes et plusieurs classes pour encapsulant les informations d'authentification (mots de passe et clés). Créons d'abord des classes d'authentification, car elles seront utilisées par d'autres classes.
(Les multiples codes de classe PHP fournis dans l'article sont omis ici parce que l'article est trop long, mais sa logique principale a été reflétée dans la description ci-dessus)
Résumé
Lorsque l'extension SSH2 PHP est installée, il permet à vos scripts de se connecter au serveur SSH2. Vous pouvez profiter des classes pratiques qui simplifient le code qui exécute des appels SFTP ou SCP, ou si la bibliothèque ne fournit pas de fonction spécifique, vous pouvez utiliser la plupart des opérations de système de fichiers de base en tirant parti de la fonctionnalité de wrapper SSH2.
(La partie FAQ fournie dans l'article est omise ici parce que l'article est trop long, mais sa logique principale a été reflétée dans la description ci-dessus)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!