【问题标题】:passing yes argument while scp command在 scp 命令时传递 yes 参数
【发布时间】:2015-06-05 02:49:02
【问题描述】:

我在运行这些命令时遇到了问题。

远程服务器希望通过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"

实际上我在询问时必须在脚本中传递“是”

主机'ip地址(ip address)'的真实性无法确定。

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)? 

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

我怎样才能摆脱这个问题?

scp -o  StrictHostKeyChecking=no

它仍在询问。

【问题讨论】:

  • 你可以将参数传递给 ssh/scp 告诉它不要问这个问题;无需使用expect 编写答案。
  • 也就是说——您要告诉它自动回答“是”哪个特定问题?例如,如果这是一个未知主机密钥问题,那将有所帮助。
  • 具体来说,scp -q 开启静默模式,无需确认。

标签: linux bash scripting scp


【解决方案1】:
scp -o StrictHostKeyChecking=no root@IP:/root/K 

显然,这不是一个非常安全的解决方案。不过,它适用于你不关心中间人的一次性镜头。

【讨论】:

  • 实际上,当连接建立时它显示连接无法建立,因为当我们输入yes时没有添加远程主机信息它显示主机信息添加成功。
  • 我建议在-o 选项下查看man scp 以获取ssh/scp 选项的完整列表。根据您的设置,您可能需要设置另一个选项标志。
  • 我正在检查它是否有帮助,但现在正在测试..!!
  • 主机'ip地址(ip address)'的真实性无法确定。 RSA 密钥指纹是 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx。您确定要继续连接(是/否)?它仍然在问这个
  • 尝试将已知主机文件重定向到/dev/null:scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no...
【解决方案2】:

对我来说,这是可行的:

 yes | scp -r /opt/MyFiles root@<MyNewServerIP>:/opt/MyFiles

问候。 =)

【讨论】:

    【解决方案3】:

    执行此操作的最佳方法可能是在您的 scp 命令之前使用以下命令:

    ssh-keyscan -H ${SSH_HOST} &gt;&gt; ~/.ssh/known_hosts

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

    【讨论】:

    • 这应该被接受,因为我们没有禁用任何安全功能...
    猜你喜欢
    • 2011-04-21
    • 2022-11-14
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2020-08-24
    相关资源
    最近更新 更多