Autenticación basada en clave con net-sftp en Ruby
ssh ironruby (2)
Se hace automáticamente, simplemente cargue su clave pública y debería funcionar de la caja.
Conexión mediante claves públicas / privadas
Las claves públicas / privadas siempre se prueban antes de la autenticación de contraseña explícita, incluso si proporciona una contraseña. Por lo tanto, si solo desea utilizar la autenticación de clave pública / privada, simplemente elimine la contraseña de la lista de argumentos. Si puede obtener con éxito un identificador de sesión, ¡entonces sus claves están configuradas correctamente!
Quiero poder usar SFTP para iniciar sesión en una serie de servidores y descargar ciertos archivos para ayudar a resolver problemas cuando surjan. Si bien pudimos utilizar un cliente, queríamos comenzar a automatizar el proceso para simplificar todo.
Mi primer intento se ve así:
def download(files_to_download, destination_directory)
Net::SFTP.start(@server, @username, :password => @password) do |sftp|
files_to_download.each do |f|
local_path = File.join(destination_directory, File.basename(f))
sftp.download!(f, local_path)
end
end
end
Mientras esto funciona, significa que necesitamos la contraseña. Idealmente, quiero utilizar autenticación de clave pública, pero no puedo ver ninguna referencia a esto en la documentación o en línea. ¿Es esto posible?
Preferiría no usar chilkat.
Gracias
Si desea especificar directamente la clave (u otras opciones SSH ), primero puede abrir una conexión Net :: SSH y luego realizar operaciones SFTP desde allí.
Net::SSH.start("localhost", "user", keys: [''keys/my_key'']) do |ssh|
ssh.sftp.upload!("/local/file.tgz", "/remote/file.tgz")
ssh.exec! "cd /some/path && tar xf /remote/file.tgz && rm /remote/file.tgz"
end
Esto también funciona para Net :: SCP
Net::SSH.start(''localhost'', ''user'', keys: [''keys/my_key''] ) do |ssh|
ssh.scp.download("/local/file.txt", "/remote/file.txt")
end