ssh 脚本要求输入密码

ssh 脚本要求输入密码

这里有一个 ssh 的小问题。

我在两台机器之间的 ssh 中设置了一些密钥,我可以在终端中通过 ssh 登录而无需密码。

我正在尝试编写一个 shell 脚本,通过 ssh 向远程服务器发送命令。当我运行脚本时,它总是在执行命令之前要求输入 ssh 密码。我怎样才能使脚本中的 ssh 登录像通过终端一样无密码登录?

在脚本中,就像 ssh user@remoteMachine “做一些事情”一样,终端中的命令运行得很好。

(编辑)详细标志差异

脚本:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/remote/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/remote/.ssh/id_dsa
debug1: Trying private key: /home/remote/.ssh/id_ecdsa
debug1: Next authentication method: password
[email protected]'s password: 

终端

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/remote/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.1.4 ([192.168.1.4]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic i686)

脚本只是

#/usr/bin/bash

ssh [email protected] 'touch ~/test'

我正在使脚本可执行并使用

./script

答案1

您可以在您的计算机上安装sshpass软件包,然后远程运行命令:

#!/bin/bash
SCRIPT='
#Your commands
'
sshpass -p<pass> ssh -o 'StrictHostKeyChecking no' -p <port> user@host "$SCRIPT"

您还sshpass -f<file>可以使用所有服务器的密码文件...因此您可以编写一个循环来创建 ssh 并自动执行操作...

相关内容