我实际上不需要运行下面的命令,如果我确实想在不输入密码的情况下登录,我知道 ssh 密钥。我只是想知道如何ssh
绕过我的文件重定向。
运行以下命令,ssh
提示我输入密码:
ssh [email protected] > /dev/null 2> /dev/null < /dev/null
这是如何运作的?stdin
、stdout
、 和stderr
都被重定向,但ssh
仍然设法在我的屏幕上打印提示并阅读我键入的内容。我尝试添加ssh
参数-t -t
和-T
(不是同时添加)来启用或禁用伪 tty 分配,但这没有什么区别。
我也尝试以这种方式关闭所有输入和输出,尽管我不知道我输入是否正确。尽管如此,ssh
还是会提示输入密码:
(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])
答案1
来自 OpenSSH readpassphrase.c,第 75 行:
/*
* Read and write to /dev/tty if available. If not, read from
* stdin and write to stderr unless a tty is required.
*/
该程序直接读取和写入 TTY,因此不可能通过关闭标准输入和输出管道来禁用直接输入。您必须告诉 SSH 客户端使用提供的密码或按照@muru 的建议进行操作。