2017-10-02 1 views
1

J'essaie d'utiliser le Laravel Flysystem avec l'adaptateur sftp de PHP League (league/flysystem-sftp). En utilisant Laravel 5.4 et la version 3.7 du Flysystem.Laravel Flysystem sftp Permission refusée

Lorsque je tente de mettre un fichier sur le serveur, je reçois le message:

Impossible de se connecter à someadress.com:22. Erreur 13. Autorisation refusée

Voici le code:

$box = new Filesystem(new SftpAdapter(Config::get('flysystem.connections.sftp'))); 
$box->put('test.txt', 'bar'); 

et les détails de connexion de la configuration:

'sftp' => [ 
    'driver'  => 'sftp', 
    'host'  => 'someadress.com', 
    'port'  => 22, 
    'username' => 'someuser', 
    'password' => 'ArndomPa55', 
    'privateKey' => '/home/user/.ssh/id_rsa', 
    'root'  => '/var/www/html/site/box/', 
    'timeout' => 20, 
], 

Quand je fais une connexion SSH à partir du serveur où cela est en cours d'exécution, il se connecte très bien, sans invite de mot de passe, il utilise donc la clé privée. Donc je ne sais pas pourquoi cela ne fonctionne pas.

J'ai vérifié le sécurisé log sur le serveur de réception et rien ne s'y trouve.

+0

Maintenant c'est un bon MCVE. Avez-vous résolu le problème? Ce problème se produit lorsque l'utilisateur local sous lequel l'application s'exécute n'a pas l'autorisation de lire */home/user/.ssh/id_rsa *. Cela fonctionne à partir de la ligne de commande parce que votre utilisateur * a * l'autorisation de lire cette clé. –

+0

De plus, vous spécifiez une option "password" avec "privateKey", qui ne fonctionnera pas si le mot de passe * n'est pas la phrase secrète de la clé privée *. Lorsque les deux sont utilisés ensemble, la valeur de mot de passe doit être la phrase secrète de la clé privée, pas le mot de passe de l'utilisateur distant. –

+0

@CyRossignol J'ai eu ce travail à la fin, j'ai supprimé le mot de passe, mais il s'est avéré être un problème avec Apache étant l'utilisateur qui tente de se connecter, en tant que tel je devais lui donner accès et avoir les clés dans un endroit l'autorisation d'accès. –

Répondre

0

J'ai un problème similaire. L'exception:

local.ERROR: LogicException: Could not login with username: username, host: xx.xx.xx.xx. 

code suivant dans fournisseur \ ligue \ flysystem SFTP \ src \ SftpAdapter j'ai trouvé que hostFingerprint revenait toujours nulle. Après que je viens enlevé privateKey => 'path/to/key' de la configuration par exemple

'sftp' => [ 
    'driver'  => 'sftp', 
    'host'  => 'someadress.com', 
    'port'  => 22, 
    'username' => 'someuser', 
    'password' => 'ArndomPa55', 
    //'privateKey' => '/home/user/.ssh/id_rsa', 
    'root'  => '/var/www/html/site/box/', 
    'timeout' => 20, 
] 

et i connecté au serveur. Je pense qu'il doit faire quelque chose avec la configuration sftp des serveurs. Pour l'instant, cela me permet de tester mes scripts, mais je vais chercher la raison. Je souhaite que cela aide à trouver une solution permanente.

+0

Je l'ai eu à un autre stade sur un autre serveur et l'ai résolu, mais c'était un problème différent de celui ci-dessus. Celui ci-dessus était qu'Apache faisait l'appel, et en tant que tel n'avait pas de clé pour se connecter au serveur. Résolu que d'utiliser d'autres réponses sur ce site. –