在scp命令时传递yes参数

Har*_*hah 12 linux bash scripting scp

当我只运行这些命令时,我遇到了一个问题.

远程服务器想要传递yes以在RSA文件中添加密钥,因为第一次建立连接scp.

命令如下

#!/bin/bash

scp  -P58222 root@IP:/root/K /N
/usr/bin/expect -c 'expect "\n" { expect "Are you sure you want to continue connecting (yes/no)?" }'
send "yes\r"
expect "$ "
send "exit\r"
Run Code Online (Sandbox Code Playgroud)

实际上我在询问时必须在我的脚本中传递yes

无法建立主机'IP地址(IP地址)'的真实性.

RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? 
Run Code Online (Sandbox Code Playgroud)

您确定要继续连接(是/否)吗?

我怎么能摆脱这个问题?

scp -o  StrictHostKeyChecking=no
Run Code Online (Sandbox Code Playgroud)

它还在问.

eco*_*omy 17

scp -o StrictHostKeyChecking=no root@IP:/root/K 
Run Code Online (Sandbox Code Playgroud)

显然,这不是一个非常安全的解决方案.但是,如果您不关心中间人,那么可以用于一次性拍摄.


小智 7

对我来说,这有效:

 yes | scp -r /opt/MyFiles root@<MyNewServerIP>:/opt/MyFiles
Run Code Online (Sandbox Code Playgroud)

问候.=)


Col*_*cks 6

可能最好的方法是在 scp 命令之前使用以下命令:

ssh-keyscan -H ${SSH_HOST} >> ~/.ssh/known_hosts

这会将 SSH_HOST 添加到您的已知主机并且scp不会抱怨。将 ${SSH_HOST} 替换为您尝试连接的 IP 地址。