沉默 ssh-add

Tom*_*ell 13 ssh ssh-agent

我有一个运行一些任务的 cronjob,在它运行的脚本的开头是一个 ssh-add 调用(它不以具有适当密钥的用户身份运行,因此它需要添加,将来它很可能使用部署版本控制中定义的密钥)。这看起来像这样:

ssh-agent bash -c "ssh-add /home/tomjn/.ssh/id_rsa; etc... "
Run Code Online (Sandbox Code Playgroud)

我想让它静音,因为这个 cronjob 定期运行,而且我的收件箱中有很多电子邮件对我来说完全没有用,说明是的,添加了密钥。我只想要出现问题时的电子邮件,例如 git pull 远程连接挂断等,这确实会发生。

所以 TLDR,我一直看到这个:

添加的身份:/home/tomjn/.ssh/id_rsa (/home/tomjn/.ssh/id_rsa)

我怎么闭嘴?

我试过这样的事情:

ssh-add /home/tomjn/.ssh/id_rsa > /dev/null
Run Code Online (Sandbox Code Playgroud)

但无济于事。手册页没有表明有一个--quiet参数,我还能做些什么来使输出静音?

mta*_*tak 21

ssh-add命令的输出在 STDERR 上。您需要将 STDERR 重定向到 /dev/null 以抑制输出:

mtak@frisbee:~$ ssh-add .ssh/id_rsa 2>/dev/null
mtak@frisbee:~$ 
Run Code Online (Sandbox Code Playgroud)

或者通过以以下方式结束命令来抑制所有输出 >/dev/null 2>&1

  • 现在 [手册页](https://man.openbsd.org/ssh-add) 上有一个选项://github.com/openssh/openssh-portable/blob/master/ssh-add.c#L464) 该标志已添加到 [本次提交](https://github.com/openssh/openssh-portable/commit /530591a5795a02d01c78877d58604723918aac87) 但是,我的 mac 上有来自自制软件的“OpenSSH_7.6p1”(最新可用的),并且此标志似乎不起作用 - 帮助中提供了“-q”选项,但它不会更改密钥添加输出。 (4认同)
  • 一个安静的标志将是更细粒度的,因为它允许在允许发现错误(如未找到密钥或不可读)的同时使正常操作静音。快速浏览 https://github.com/openssh/openssh-portable/blob/master/ssh-add.c 确认源代码中没有选项。其他选项是专门过滤“添加”消息,但在 bash 中,这通常会干扰错误处理(如果您想为某些运行时健全性检查设置 `set -eu`)。没有暗示所有这些在这里都很重要,因此只需重定向 stderr 就足够了。 (2认同)