1. Home
  2. Linux
  3. Use multiple ssh connections with pssh

How to use multiple SSH connections on Linux with Pssh

Secure Shell is an indispensable resource for Linux users that tend to work with remote Linux servers, computers, or network devices. It’s fast, security-oriented, and allows users to do everything from sending commands to remote computers and servers, to opening programs over the internet.

For as useful as SSH is, it’s only possible to interact with one machine at a time. Limits like these won’t bother the average user who uses Secure Shell to remote in once in a while, but if you use the SSH protocol in your day to day to connect to many different Linux machines, it can be a bottleneck for productivity.

Over the years, the Linux community has come to terms with the limitations of the Secure Shell and has offered up ways to get around it. One such solution is Parallel SSH. It’s a program that lets users interact with multiple remote machines over Secure Shell at once.

Setup SSH

The Parallel SSH tool makes use of OpenSSH on Linux, so you’ll need to have it set up on your system before attempting to follow along with this guide. Luckily, setting up an SSH server is very quick.

Refer to your Linux distribution’s wiki entry on SSH and learn how to get it going. If you have trouble getting it working, head over to our guide on how to set up SSH on Linux. It’s in-depth and covers everything you need to know!

Install Pssh on Linux

Before we get into how to use the Pssh tool, we need to go over how to install it. Getting the program working involves using various commands, so open up a terminal window and follow along with the instructions that match the operating system you use.

Ubuntu

sudo apt install pssh

Debian

sudo apt-get install pssh

Arch Linux

Pssh isn’t in Arch Linux’s package repositories. However, users can still easily install it, as there is a Pssh AUR package. To get the program working on your Arch PC, do the following:

sudo pacman -S base-devel git

git clone https://aur.archlinux.org/python-pssh.git

cd python-pssh

makepkg -sri

Fedora

sudo dnf install pssh -y

OpenSUSE

sudo zypper install pssh

Python PIP

Not every Linux OS has the Pssh tool in their software sources. If you’re running a distribution that doesn’t carry it, you will have to find an alternative way of installing it.

As of now, the best way to get Pssh on lesser-known Linux operating systems is via the Python package installation tool.

Note: be sure that you have python-pip (or) pip set up before attempting to use it to get Pssh.

sudo python-pip install pssh

or

sudo pip install pssh

Is Pip not working for you? Consider downloading the Pssh source code instead.

Set up Pssh

For the Parallel SSH tool to work, the user must set up a host file that outlines all of the remote computer addresses to use with the program. Launch a terminal and use the touch command to create a new Pssh host file.

touch ~/.pssh_hosts_files

Next, open up the host file with the Nano text editing tool. Using Nano, write out the addresses of every remote Linux machine running SSH you wish to interact with using Pssh. For best results, use the local or internet IP address, rather than the hostname.

When setting up the host file, keep in mind that you must add the username, along with the address. It should look like username@ip.address.of.machine.

nano ~/.pssh_hosts_files

After your host file is written out, save the edits by pressing Ctrl + O on the keyboard. Then, exit Nano with the Ctrl + X keyboard combination.

 Sending commands with Pssh

Pssh is a wrapper for SSH that allows the user to interact with multiple machines at once. There’s no convoluted syntax to understand; if you already know how the Linux terminal works, it’ll make sense.

To send any command to your list of remote computers (at once) over Secure Shell via Pssh, do:

pssh -i -h ~/.pssh_hosts_files terminal command

Still not sure about how Pssh works? Try out some of the example commands below.

Running processes

Need to check running processes on all of your Linux machines at once? Run top with Pssh.

pssh -i -h ~/.pssh_hosts_files top

Computer uptime

Curious about how long all of your Linux computers have been running? Use the uptime command alongside the Pssh tool.

pssh -i -h ~/.pssh_hosts_files uptime

Hard drive space

Check how much hard drive space each remote Linux machine at the same time by using df with Pssh.

pssh -i -h ~/.pssh_hosts_files df -h

System specs

To check the system specs of all of the remote Linux computers on the host list, run inxi

pssh -i -h ~/.pssh_hosts_files inxi -F