即使 known_hosts 为空或已删除,scp 也不会触发初始提示

即使 known_hosts 为空或已删除,scp 也不会触发初始提示

scp我有一个 bash 脚本,使用和将文件复制到远程服务器expect。脚本如下:

#!/usr/bin/expect -f
set port [lindex $argv 0]
set file_to_send [lindex $argv 1]
set login [lindex $argv 2]@[lindex $argv 3]
set username [lindex $argv 2]
set hostname [lindex $argv 3]
set password [lindex $argv 4]
set dest_folder [lindex $argv 5]

spawn scp -P $port $file_to_send $login:$dest_folder
expect {
    # this will loop forever
    # {*fingerprint*}
    # sleep 0.8
    {Are you sure you want to continue connecting (yes/no/\[fingerprint\])?}
    {
        exp_send "yes\r"
        exp_continue
    }
    {password:} {send "$password\r"}    
}
expect eof

我想获取我的计算机从未连接到远程服务器时的初始提示。因此,我尝试删除known_hosts计算机中添加的密钥或整个文件。但是,我无法再获取初始提示。这在另一台计算机上不会发生。这两种方法都可以按预期给我初始提示。为什么会发生这种情况?我该怎么做才能得到我想要的?

grep -i StrictHostKeyChecking ~/.ssh/config /etc/ssh/ssh_config所有 3 台机器的输出为:

grep: /home/ubuntu/.ssh/config: No such file or directory
/etc/ssh/ssh_config:#   StrictHostKeyChecking ask

答案1

找到罪魁祸首了! 用户已知主机文件默认值为 ~/.ssh/known_hosts和 。为了比较/调试目的,~/.ssh/known_hosts2我将原始值重命名known_hosts为。将其重命名为会再次触发初始提示。known_hosts2known_hosts3

相关内容