管道中的命令如何从键盘读取?

管道中的命令如何从键盘读取?

我随机尝试在 bash 1中执行以下命令

cat /some/file | ssh user@machine 'cat >/destination/file

远程计算机上没有安装密钥,因此唯一的身份验证方法是使用密码机制。我认为这行不通,因为管道会断开 SSH 的标准输入与终端的连接。当系统提示我输入密码并且文件已成功发送时,我感到很惊讶。

关于 SSH 如何在未连接的情况下读取键盘以提示输入密码的问题,有什么想法吗?


1我知道有更好的替代方法可以在两台计算机之间复制文件。

答案1

答案2

cat /some/file | ssh user@machine 'cat >/destination/file

这不起作用,因为在显示提示和读取密码(安全)之前ssh截断了它。stdin可能的解决方法是使用expect脚本,它将与正在运行的ssh进程交互。

相关内容