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_hosts2
known_hosts3