Ciao a tutti,
ho un server Ubuntu 10.04 con Php5 e le librerie ssh2 del pecl installate.
Il mio tentativo è stato inizialmente di collegarmi utilizzando la funzione ssh_auth_password, ovvero tramite la coppia nome utente - password.
volendo superare l'ostacolo della password ho creato le chiavi pubbliche sul client, le ho copiate nel file authorized_keys del server e provando da shell effettivamente non richiede la password.
Tutto questo da utente root (sia sul client che sul server).
Ho provato, dunque, a utilizzare questo meccanismo da PHP e la cosa "interessante" è che la funzione che deve effettuare l'autenticazione (ssh2_auth_pubkey_file) non segnala nessun tipo di errore, se non quello di ritornare "false".
Il mio codice è questo:
[CODE
<?php
/* Notify the user if the server terminates the connection */
function my_ssh_disconnect($reason, $message, $language) {
printf("Server disconnected with reason code [%d] and message: %s\n",
$reason, $message);
}
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
$callbacks = array('disconnect' => 'my_ssh_disconnect');
if(!($con = ssh2_connect("192.168.71.190", 22, array('hostkey'=>'ssh-rsa'), $callbacks))) {
echo "fail: unable to establish connectionn";
} else {
if(!ssh2_auth_pubkey_file($con, "root", "192.168.71.190", "/root/.ssh/id_rsa.pub", "/root/.ssh/id_rsa", '')) {
die("fail: unable to authenticate");
} else {
// allright, we're in!
echo "okay: logged in...
";
// execute a command
$command = "touch file_in_ssh.txt; echo Ciaooooo >> file_in_ssh.txt";
if(!($stream = ssh2_exec($con, $command)) ){
echo "fail: unable to execute commandn";
} else{
// collect returning data from command
stream_set_blocking( $stream, true );
$data = "";
while( $buf = fread($stream,4096) ){
$data .= $buf;
}
fclose($stream);
echo $data;
}
}
}
?>
[/CODE]
quando accedo alla pagine mi stampa "fail: unable to authenticate".
Qualcuno ha qualche idea?
La mia è che sia qualche problema di permessi sulle chiavi, dato che non sono accessibile all'utente www-data (cioè Apache) e quindi termina in modo scorretto. Ma ogni tentativo del genere non ha dato successo. Ho anche provato (ultima spiaggia) a copiare le chiavi in /var/www dove ero sicuro che Apache potesse leggerle.
Grazie.
R.

Rispondi quotando