该脚本的作用是与远程主机建立SSH连接,然后使用命令scp
将目录复制/home/desktop/Documents
到目标目录/home/haca/desktop
脚本:
#!/bin/bash
SCRIPT="cd Desktop; pwd; echo -e 'PASSWORD' | sudo -S scp -r /home/desktop/Documents/ [email protected]:/home/haca/desktop"
HOSTS=("192.168.0.118")
USERNAMES=("haca")
PASSWORDS=("******")
for i in ${!HOSTS[*]} ; do
echo ${HOSTS[i]}
SCR=${SCRIPT/PASSWORD/${PASSWORDS[i]}}
sshpass -p ${PASSWORDS[i]} ssh -l ${USERNAMES[i]} ${HOSTS[i]} "${SCR}"
done
出于显而易见的原因,我在该脚本中省略了密码。
不知道为什么它不起作用这是我运行脚本时收到的输出:
192.168.0.118
/home/haca/Desktop
[sudo] password for haca: Host key verification failed.
lost connection
任何指导将不胜感激。
答案1
Linux 主机第一次启动时,通常会生成一组 SSH“主机密钥”。当您连接到主机时,主机会向您的 SSH 客户端发送其密钥。如果您的机器在无法识别密钥之前从未与该主机通信,因此您的客户端会发出如下警告:
The authenticity of host 'irobot (192.168.1.1)' cant be established.
ED25519 key fingerprint is SHA256:di+nebThBUTmW57O8sMVtP3X2YGenftovtoPRogvBvI.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
如果您选择“是”,主机密钥将添加到文件中:
$HOME/.ssh/known_hosts
这样,下次您连接到该主机时,它将被识别,并且 SSH 将进行连接,而不会再次提示您输入主机密钥。错误:
Host key verification failed.
这是因为主机没有安装主机密钥。有多种方法可以解决这个问题,最简单的就是手动运行这些步骤,因为 SSH 会提示您将主机密钥保存在计算机上 - 之后自动化运行应该不会出现问题。
或者,您可以使用该ssh-keyscan
实用程序来存储主机密钥,例如:
ssh-keyscan SOME_HOSTNAME >> $HOME/.ssh/known_hosts