如何从脚本“您确定要继续连接(是/否)吗?”中接受“是”?

the*_*ole 11 linux ssh

我试过了

echo yes | ssh myserver@13.4.2.1
yes | ssh myserver@13.4.2.1
ssh -y myserver@13.4.2.1
Run Code Online (Sandbox Code Playgroud)

没有一个似乎工作?

编辑#1

我的部分问题是,ssh当命令实际上是本地命令时,我认为命令之后的每个命令都是远程命令。我猜远程命令必须在作为参数传递给 ssh 命令的字符串中声明,例如

$ ssh myserver@13.4.2.1 'remote command'
Run Code Online (Sandbox Code Playgroud)

Dop*_*oti 15

这是设计使然。 ssh的主机验证和身份验证交互故意不接受来自管道的输入。但是,如果您对自己的主机密钥有信心,则可以执行以下操作:

ssh-keyscan host.example.com >> $HOME/.ssh/known_hosts
ssh host.example.com
Run Code Online (Sandbox Code Playgroud)


slm*_*slm 9

如果您不关心通过 SSH 对主机进行身份验证,并且盲目地接受来自服务器的密钥或忽略它们,那么最好忽略它们。

$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no <user>@<host>
Run Code Online (Sandbox Code Playgroud)

请记住,您正在绑定 SSH 保护您的能力,但这是使用工具的更合适方式,而不是通过外部手段强制使用这些工具。

  • 如果没有 `-o UserKnownHostsFile=/dev/null` 则效果更好 (5认同)