SSH 伪终端

SSH 伪终端

我正在尝试通过 SSH 连接检索 SVN 转储

ssh user@host "sudo -u $repo_owner svnadmin dump $repo_path"

根据我sudo在过去 15 分钟内是否使用过,我是否需要输入密码。问题是当我必须输入密码时,它会在终端中以未掩码的形式显示。因此,我尝试了类似

ssh -t #...

这将打开一个伪终端。现在,我遇到一个问题,我没有收到输入密码的提示。脚本只是停止并等待用户输入,而不会告诉用户他应该输入密码。

有没有办法确定脚本调用的程序是否等待用户输入?更重要的是,我是否可以在其他程序想要从标准输入读取某些内容之前将某些内容写入标准输出或标准错误输出。我的意思是在实际读取完成之前调用某种钩子方法。

-- t6d

答案1

在您的 sudoers 文件中使用$repo_owner ALL = NOPASSWD: /the/path/to/svnadmin,显然您需要更改路径和 $repo_owner 才能有效。

答案2

您可以使用基于密钥的授权进行 ssh 连接,并允许user无需密码即可启动 svnadmin(或包装脚本)

答案3

ssh-agent 是您的答案,一旦正确设置,您将不再需要使用密码,并且不需要多次重新输入密码。

相关内容