我试过了
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)
没有一个似乎工作?
我的部分问题是,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)
如果您不关心通过 SSH 对主机进行身份验证,并且盲目地接受来自服务器的密钥或忽略它们,那么最好忽略它们。
$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no <user>@<host>
Run Code Online (Sandbox Code Playgroud)
请记住,您正在绑定 SSH 保护您的能力,但这是使用工具的更合适方式,而不是通过外部手段强制使用这些工具。