我想使用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
当我这样做时,它会一直询问我的密码。我不知道如何生成密钥,请你告诉我步骤。
答案 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/