You have no controlling tty and no DISPLAY. Cannot read passphrase.
warning: Authentication failed.
Disconnected (local); authentication cancelled by user (Authentication cancelled by user.).
Disconnect reason 13, exit code = 77
scp: warning: ssh2 client failed to authenticate. (or you have too old ssh2 installed, check with ssh2 -V)
当我运行脚本时出现此错误。 ssh 在服务器之间以两种方式工作
答案1
您的问题是您正在使用某种需要用户输入的身份验证方法(在您的情况下,显然是一个用于解密私钥的密码,或者可能是密码),但您的程序无法接收任何用户输入,因为它没有启动在图形会话中(防止ssh
生成询问密码的窗口表单)或在终端中(因此ssh
无法交互式地询问您密码)。
ssh
当您测试打开会话时有效,因为在这种情况下您是ssh
在终端中启动,因此获取密码没有问题。
如果您的脚本在没有控制 tty 的情况下运行(例如,作为 cron 作业),您需要的是非交互式身份验证。例如,没有密码的私钥。当然,这有些不安全,您可能希望限制脚本通过 ssh 可执行的命令集,以防止攻击者知道私钥以在服务器上获得功能齐全的 shell。