Ruby Net::SSH, The SSH (Secure Shell) Protocol

Ruby Net::SSH, The SSH (Secure Shell) Protocol

We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

SSH (or "Secure Shell") is a network protocol that allows you to exchange data with a remote host over an encrypted channel. It's most commonly used as an interactive shell with Linux and other UNIX-like systems. You may use it to log into a Web server and run a few commands to maintain your website. It can also do other things, though, such as transfer files and forward network connections.

Net::SSH is a way for Ruby to interact with SSH. Using this gem, you can connect to remote hosts, run commands, examine their output, transfer files, forward network connections, and do anything you would normally do with an SSH client. This is a powerful tool to have if you frequently interact with remote Linux or UNIX-like systems.

Installing Net::SSH

The Net::SSH library itself is pure Ruby--it requires no other gems and doesn't need a compiler to install. However, it does rely on the OpenSSL library to do all the encryption needed. To see if OpenSSL is installed, run the following command.

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

If the Ruby command above outputs an OpenSSL version, it's installed and everything should work. The Windows One-Click Installer for Ruby includes OpenSSL, as do many other Ruby distributions.

To install the Net::SSH library itself, install the net-ssh gem.

gem install net-ssh

Basic Usage

The most common way to use Net::SSH is to use the Net::SSH.start method. This method takes the hostname, username and password and will either return an object representing the session or pass it to a block if given one. If you give the ​start method a block, the connection will be closed at the end of the block. Otherwise, you'll have to manually close the connection when you're finished with it.

The following example logs into a remote host and gets the output of the ls (list files) command.

#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
HOST = ''
USER = 'username'
PASS = 'password'
Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|
result = ssh.exec!('ls')
puts result

Within the block above, the ssh object refers to the open and authenticated connection. With this object, you can launch any number of commands, launch commands in parallel, transfer files, etc. You might also notice that the password was passed as a hash argument. This is because SSH allows for a variety of authentication schemes, and you need to tell it this is a password.


  1. Malahn

    Of course, I don't know much about the post, but I'll try to master it.

  2. Mahpee

    Hello Passer-by !!!!

  3. Tocho

    You're joking?

  4. Arashilmaran

    Thanks a lot for the info, now I will know.

  5. Arashik

    remarkably, very useful room

Write a message