Okay, meiner Meinung nach spielt der PHP Code zur Verbindung via pubKey keine großartige Rolle, da es mir eher um den Zugriff auf das pubKey File geht. Aber dennoch hier beispielhafter Code ...
PHP-Code:
$host = 'sftp.domain.tld';
$port = 22;
$username = 'username';
$password = '';
try {
$connection = ssh2_connect($host, $port);
if (!$connection) {
throw new Exception("Could not connect to " . $host . " on port " . $port);
}
if (!ssh2_auth_pubkey_file($connection, $username, '/var/www/vhosts/user/.ssh/username.pub', '/var/www/vhosts/user/.ssh/username', $password)) {
throw new Exception("Could not authenticate with username " . $username . " and private key");
}
} catch(Exception $e) {
die($e->getMessage());
}
Mein derzeitiger Lösungsansatz sieht momentan so aus, dass ich ein neues keyPair generiert habe, welches dem User, unter dem PHP ausgeführt wird, zugeordnet ist. Aus meiner Sicht der einfachere Weg, anstatt jetzt in der PHP Konfiguration Zugriffe auf Pfade zu erlauben, umständliche User-Wechsel zu programmieren, etc.
Übrigens ist ein Zugriff per chmod() auf das .ssh Verzeichnis nicht möglich.