En PHP5.3.3 (en CentOS y apache2) estoy intentando conectarme a un SFTP a través de un script php. El código toma las claves y detalles del servidor del constructorPHP ssh2_auth_pubkey_file(): Falló la autenticación usando la clave pública: datos clave no válidos, no codificada en base64
function __construct(){
$this->host = 'servername.loc';
$this->port = SFTP_PORT;
$this->auth_user = 'username';
$this->auth_pub = '/data/home/username/.ssh/id_rsa.pub';
$this->auth_priv = '/data/home/username/.ssh/id_rsa';
$this->auth_pass = null;
$this->connection = null;
}
y utiliza esos detalles para crear la conexión.
private function connect(){
if (!($this->connection = ssh2_connect($this->host, $this->port))) {
$this->response = array('code' => "20",
"message" => "Error connecting to SFTP server.");
return false;
}
if (!ssh2_auth_pubkey_file($this->connection, $this->auth_user, $this->auth_pub,
$this->auth_priv, $this->auth_pass)) {
$this->response = array('code' => "40",
"message" => "Error authenticating to SFTP server with key.");
$this->disconnect();
return false;
}
}
El resultado que obtiene es un error en la llamada a ssh2_auth_pubkey_file()
.
error es:
"* ssh2_auth_pubkey_file(): Error de autenticación de nombre de usuario utilizando la clave pública: datos claves no válidas, no codificado en base64 *"
No hay ninguna contraseña en el clave, y puedo usar estas teclas a través de CLI ssh para conectarme al servidor manualmente. Estoy perplejo. ¿Debo codificar las claves de alguna manera? Sugerencias?
Gracias de antemano. Gary C, también conocido como Unkul Munki
Bueno, según parece, encuentro la respuesta después de hacer la pregunta abiertamente. Encontré esto en otro sitio con comentarios dev. ** d23d23 en gmail dot com dijo: ** * "La clave pública debe estar en una línea comenzando con el tipo de clave, 1 espacio y seguido por los datos clave (sin líneas nuevas) y no seguido de comentarios. una limitación de libssh2, por lo que debe eliminar cualquier exceso de datos del archivo después de crearlo con las herramientas de generación de claves."* Así que, aunque usé openssl para crear la clave privada y la clave pública, tuve que editarlo para ponerlo todo en una línea con el tipo de clave como se indica arriba. Gracias. Unkul Munki –