我之前在这里问过一个问题。我的问题是我试图通过管道将密码提供给 scp
echo mypassword | scp tim@xxx.xxx.xxx.xxx:project/* ~/project/
Run Code Online (Sandbox Code Playgroud)
但是它仍然要求我手动输入密码。我应该如何在命令中将 mypassword 指定为 scp?
我仍然不明白其中一个答复。例如,TTY 的输入流是什么?输入流的常用方法有哪些?如何知道命令的 stdin 输入是什么类型的输入流?例如 ssh/scp。
基本上 SSH(以及 SCP 和 SFTP 等相关工具)会探测其输入似乎来自哪里,如果不是来自可能是实际用户的人,它不会通过该方法接受密码,而是要求输入密码或者更直接地来自用户的密码。
出于安全原因,不建议(并且,IIRC,实际上不可能)按照您的意愿在命令行上提供您的 SSH 密码。
如果您需要在没有密码的情况下登录,则需要配置基于密钥的身份验证,幸好这并不困难。那里有很多很好的教程,快速搜索到http://novosial.org/openssh/publickey-auth/看起来像是对这个和其他相关细节的很好的描述,你可能会觉得有用。