Se connecter à SFTP en utilisant PHP et la clé privée
J'ai lu l'article après article et juste ne peut pas trouver "la solution" qui fonctionne pour ce que j'ai.
Je suis en train de télécharger des fichiers via SFTP à l'aide de scripts php. J'ai connecté à l'aide de CyberDuck avec succès, mais j'ai besoin de le faire par programmation.
J'ai un .PPK fichier du fournisseur que j'ai utilisé dans CyberDuck. J'ai un nom d'utilisateur. J'ai le nom d'hôte. Si j'ouvre le fichier PPK je vois certains Publics, des Lignes, des Lignes Privées et Privés-MAC.
Est-il de toute façon je peux accéder au serveur de faire ce que je dois faire en utilisant les informations que j'ai?
Voici le code que j'était en train de jouer avec:
<?php if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
?>
<?php
$conn = ssh2_connect('hostname.com', 22);
echo $conn;
ssh2_auth_pubkey_file($conn,'USERNAME','/var/www/html/FILENAME.PPK');
//send a file
ssh2_scp_send($conn, '/var/www/html/FILETOSEND.TXT', 'FILETOSEND.TXT', 0644);
?>
Je ne reçois pas toutes les erreurs, mais le fichier ne se trouve pas sur le serveur.
Je peux confirmer que SSH2 est installé sur mon hébergeur.
Merci pour toute aide que vous pouvez fournir.
- Je vous recommande fortement d'utiliser phpseclib pour ce que vous voulez atteindre. C'est beaucoup mieux que de php construire en ssh2 fonctions et très facile à utiliser
- Vous ne semblez pas savoir que
ssh2_auth_pubkey_file
s'attend à 4 arguments et non 3. php.net/manual/en/function.ssh2-auth-pubkey-file.php - Je ne vois que ce qui est pourquoi je suppose que je suis d'avoir des problèmes. Puis-je rompre le fichier PPK dans les éléments manquants?
- merci je vais regarder
- Le ppk extension indique que la clé est un Mastic formaté la clé privée. libssh2 ne fonctionne qu'avec PKCS1 formaté clés privées. phpseclib - comme l'avait recommandé michael - prend en charge à la fois. Voir phpseclib.sourceforge.net/ssh/compare.html#pubkey
- Jetez un oeil à andy-carter.com/blog/connecting-to-sftp-with-php il explique comment le faire
Vous devez vous connecter pour publier un commentaire.
La question est assez ancien, mais comme j'étais à la recherche d'exactement la même réponse, voici ce que j'ai pu recueillir.
D'abord: la touche de Changement de format .ppk pour .pem
.pkk clés sont Mastic format de la clé privée.
Si vous souhaitez la remplacer .format pem, vous devez installer putty-outils avec:
(Sur un Mac, installer putty paquet avec homebrew. Pour Windows, je n'ai aucune idée.)
Ensuite, vous pouvez modifier le format de la clé:
Juste au cas où vous voulez extraire la clé publique à partir de cette clé privée (vous n'aurez pas besoin pour le reste de cette réponse, mais juste au cas où) il est assez facile:
Deuxième: connectez-vous avec sFTP
Maintenant que vous avez la
privatekey.pem
, vous pouvez utiliser phpseclib pour se connecter via SFTP. Tout d'abord, installez phpseclib avec le Compositeur:Puis en PHP:
Si vous voulez plus d'info, allez à la phpseclib sFTP liste des fonctionnalités.