使用 bash 无密码的 ssh 密钥

use*_*207 1 ssh

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

ip位置

ip位置

等等

我有一个 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
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它一直要求我输入密码。我不知道如何生成密钥,请告诉我步骤。

小智 5

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

ssh-keygen
Run Code Online (Sandbox Code Playgroud)

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

ssh-copy-id user@machine
Run Code Online (Sandbox Code Playgroud)