Build, deploy, and monitor AI models and apps.
Get consistency across operating environments.
Simplify the way you build, deploy, and manage apps.
Scale automation and unite tech, teams, and environments.
Modernize operations for virtualized and containerized workloads.
Code, build, deploy, and monitor security-focused software.
Deploy workloads closer to the source with edge technology.
Learn how to use our cloud products and solutions at your own pace in the Red Hat® Hybrid Cloud Console.
Develop and deploy AI solutions across the hybrid cloud.
Support hybrid cloud innovation on a flexible operating system.
Build, modernize, and deploy apps at scale.
Implement enterprise-wide automation.
Discover resources and tools to help you build, deliver, and manage cloud-native applications and services.
Find solutions from our collaborative community of experts and technologies in the Red Hat® Ecosystem Catalog.
We'll recommend resources you may like as you browse. Try these suggestions for now.
A subscription may be required for some services.
[Editor's Note, Nov 29, 2021: All examples of providing a password on the command line include the risk of the password being captured in the user's shell history (if supported) or visible to all system users in the process listing. Security experts recommend deleting all files and clearing shell logs.]
Connecting and transferring files to remote systems is something system administrators do all the time. One essential tool used by many system administrators on Linux platforms is SSH. SSH supports two forms of authentication:
Public-key authentication is considered the most secure form of these two methods, though password authentication is the most popular and easiest. However, with password authentication, the user is always asked to enter the password. This repetition is tedious. Furthermore, SSH also requires manual intervention when used in a shell script. If automation is needed when using SSH password authentication, then a simple tool calledsshpass
is indispensable.
Thesshpass
utility is designed to run SSH using thekeyboard-interactive password authentication mode, but in a non-interactive way.
SSH uses direct TTY access to ensure that the password is indeed issued by an interactive keyboard user.sshpass
runs SSH in a dedicated TTY, fooling SSH into thinking it is getting the password from an interactive user.
[ Check out thisguide to boosting hybrid cloud security and protecting your business. ]
You can installsshpass
with this simple command:
# yum install sshpass
Specify the command you want to run after thesshpass
options. Typically, the command isssh
with arguments, but it can also be any other command. The SSH password prompt is, however, currently hardcoded intosshpass
.
The synopsis for thesshpass
command is described below:
sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments
Where:
-ppassword The password is given on the command line. -ffilename The password is the first line of the file filename. -dnumber number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. -e The password is taken from the environment variable "SSHPASS".
[ Learn how tomanage your Linux environment for success. ]
To better understand the value and use ofsshpass
, let's look at some examples with several different utilities, including SSH, Rsync, Scp, and GPG.
Example 1: SSH
Usesshpass
to log into a remote server by using SSH. Let's assume the password is!4u2tryhack
. Below are several ways to use the sshpass options.
A. Use the-p
(this is considered the least secure choice and shouldn't be used):
$ sshpass -p !4u2tryhack ssh username@host.example.com
The-p
option looks like this when used in a shell script:
$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no username@host.example.com
B. Use the-f
option (the password should be the first line of the filename):
$ echo '!4u2tryhack' >pass_file$ chmod 0400 pass_file$ sshpass -f pass_file ssh username@host.example.com
The $ chmod 0400 pass_file
is critical for ensuring the security of the password file. The default umask on RHEL is 033, which would permit world readability to the file.
Here is the-f
option when used in shell script:
$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no username@host.example.com
C. Use the-e
option (the password should be the first line of the filename):
$ SSHPASS='!4u2tryhack' sshpass -e ssh username@host.example.com
The-e
option when used in shell script looks like this:
$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no username@host.example.com
Example 2: Rsync
Usesshpass
withrsync
:
$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/
The above uses the-e
option, which passes the password to the environment variableSSHPASS
We can use the-f
switch like this:
$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/
Example 3: Scp
Usesshpass
withscp:
$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html
Example 4: GPG
You can also usesshpass
with a GPG-encrypted file. When the-f
switch is used, the reference file is in plaintext. Let's see how we can encrypt a file with GPG and use it.
First, create a file as follows:
$ echo '!4u2tryhack' > .sshpasswd
Next, encrypt the file using thegpg
command:
$ gpg -c .sshpasswd
Remove the file which contains the plaintext:
$ rm .sshpasswd
Finally, use it as follows:
$ gpg -d -q .sshpasswd.gpg | sshpass ssh user@srv1.example.com
sshpass
is a simple tool that can be of great help to sysadmins. This doesn't, by any means, override the most secure form of SSH authentication, which is public-key authentication. However,sshpass
can also be added to the sysadmin toolbox.
[ Free online course:Red Hat Enterprise Linux technical overview. ]
The latest on IT automation for tech, teams, and environments
Updates on the platforms that free customers to run AI workloads anywhere
Explore how we build a more flexible future with hybrid cloud
The latest on how we reduce risks across environments and technologies
Updates on the platforms that simplify operations at the edge
The latest on the world’s leading enterprise Linux platform
Inside our solutions to the toughest application challenges
The future of enterprise virtualization for your workloads on-premise or across clouds
Red Hat is an open hybrid cloud technology leader, delivering a consistent, comprehensive foundation for transformative IT and artificial intelligence (AI) applications in the enterprise. As atrusted adviser to the Fortune 500, Red Hat offers cloud, developer, Linux, automation, and application platform technologies, as well asaward-winning services.