ssh key无密码使用bash

时间:2013-10-28 01:19:29

标签: ssh

我想使用ssh密钥身份验证。我有一个包含以下内容的文件:

ip location

ip location

我有一个bash脚本如下:

 declare -A mylist
 declare -A myarray

 i=1

while read line ; do

        mylist[$i]=$(echo $line | awk '{print $1}')
        myarray[$i]=$(echo $line | awk '{print $2}')

((i++))

done <file.conf

for ip in "${mylist[@]}"; do
 for location in "${myarray[@]}" ; do

        ssh ${ip} tail -f ${location} > /home/log_${ip} 2>/dev/null &


 done

done

当我这样做时,它会一直询问我的密码。我不知道如何生成密钥,请你告诉我步骤。

3 个答案:

答案 0 :(得分:4)

以普通用户身份从主机执行以下命令。这将在该主机上为该用户生成公钥 - 私钥。

ssh-keygen

默认情况下,密钥将在〜/ .ssh下创建,通常命名为id_rsa(私钥)id_rsa.pub(公钥) 现在,可以将公钥复制到任意数量的远程计算机,并且所有对这些主机的进一步安全登录都不会提示输入密码。

ssh-copy-id user@machine

答案 1 :(得分:0)

如果你想使用你的密钥打开一个ssh会话而不必输入密码我认为这就是你要找的: http://www.linuxproblem.org/art_9.html

答案 2 :(得分:0)

如果您不想使用密码并且安全性不重要,则另一种解决方案是使用sshpass

这通常不是一个好主意,特别是在安全的环境中,但在某些情况下它可以提供帮助。

sshpass -p raspberry ssh pi@192.168.0.145

这可以与

结合使用
ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no pi@192.168.0.145

避免发生阻止自动编写脚本的确认问题。

同样,只在不同机器共享IP并且安全性不重要的开发系统中使用它。

https://ownyourbits.com/2017/02/22/easy-passwordless-ssh-with-sshh/