我正在尝试使用 scp 命令将目录从本地 ubuntu 计算机复制到远程 ubuntu 计算机

我正在尝试使用 scp 命令将目录从本地 ubuntu 计算机复制到远程 ubuntu 计算机

该脚本的作用是与远程主机建立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

相关内容