I want to be able to use SFTP to login into a number of servers and download certain files to help debug issues as and when they arise. While we could use a client, we wante
If you want to directly specify the key (or other SSH options) you can first open a Net::SSH connection, and then do SFTP operations from there.
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
This also works for Net::SCP
Net::SSH.start('localhost', 'user', keys: ['keys/my_key'] ) do |ssh|
ssh.scp.download("/local/file.txt", "/remote/file.txt")
end
It's automatically done, just upload your public key and should work out of the box.
Connecting using public/private keys
Public/private keys are always tried before the explicit password authentication, even if you provide a password. Thus, if you only want to use public/private key authentication, simply remove the password from the argument list. If you can successfully obtain a session handle, then your keys are set up correctly!