乐闻世界logo
搜索文章和话题

How to automatically enter SSH password with script

1个答案

1

In daily system administration tasks, it is common to use SSH to access remote servers. Automating password input can significantly simplify repetitive login tasks. However, for security reasons, SSH does not support direct password input in the command line by default, so specific tools and methods are required to achieve this functionality. Here are several common methods:

1. Using the sshpass Tool

sshpass is a highly useful tool that provides passwords to SSH in a non-interactive manner. Its usage is straightforward:

bash
sshpass -p 'your password' ssh username@server_address

Advantages:

  • Easy to install and use.
  • Can be directly integrated into scripts.

Disadvantages:

  • Lower security, as passwords appear in plaintext within commands.
  • Not recommended in some systems due to potential exposure of sensitive credentials.

2. Using Expect Scripts

Expect is a tool designed for automating interactive applications, capable of simulating user input. It can automate the SSH password input process:

bash
#!/usr/bin/expect set timeout 20 set host [lindex $argv 0] set user [lindex $argv 1] set password [lindex $argv 2] spawn ssh $user@$host expect "password:" send "$password\r" interact

Save this script and execute it with parameters:

bash
./ssh_auto.exp server_address username password

Advantages:

  • Highly flexible for handling complex interactive logic.
  • More secure, especially when combined with encryption tools.

Disadvantages:

  • Requires knowledge of Expect scripting.
  • Requires installation of the Expect package.

3. Using Key-Based Authentication

Although not directly using passwords, setting up SSH key-based authentication is a more secure and efficient method for automating SSH logins. This involves generating a public key and private key pair, placing the public key on the server, and using the private key locally for authentication:

bash
ssh-keygen -t rsa ssh-copy-id username@server_address

When logging in, no password is required:

bash
ssh username@server_address

Advantages:

  • Highly secure, as passwords are never exposed in scripts.
  • Ideal for long-term automation tasks.

Disadvantages:

  • Requires initial setup.
  • Configuration may be complex in certain environments.

In summary, while tools such as sshpass or Expect can automate password input, for security and maintenance reasons, it is generally recommended to use key-based authentication for handling automated SSH logins. If password input is necessary, ensure security by implementing measures such as permission controls and encryption techniques to protect scripts and passwords.

2024年8月24日 17:51 回复

你的答案