【问题标题】:how to add commands in .ssh/authorized_keys如何在 .ssh/authorized_keys 中添加命令
【发布时间】:2014-11-28 02:12:51
【问题描述】:

我在man sshd 上读到过,当用户使用特定密钥登录时,可以添加登录后处理:

environment="FOO=BAR" ssh-rsa AAA... keytag

但是当我尝试 ssh 进入系统时,目标主机没有注册该线路,而是要求输入密码。添加这个的正确方法是什么?我想做类似的事情

command="echo|mail -s ${USER},${HOSTNAME} a.monitored.email@example.com" ssh-rsa AAA... keytag

我正在使用 Suse SLE 11 SP2。

谢谢 饭菜

【问题讨论】:

  • 现在尝试使用 AuthorizedKeysCommand yes 和 AuthorizedKeysCommandRunAs nobody

标签: sshd


【解决方案1】:

首先根据documentationcommand = "command"

指定每当此密钥用于身份验证时执行命令。 用户提供的命令(如果有)将被忽略。如果客户端请求 pty,则该命令在 pty 上运行;否则它在没有 tty 的情况下运行。如果需要 8 位清洁通道,则不得请求 pty 或指定 no-pty 应该。引号 可以通过用反斜杠引用命令来包含在命令中。此选项可能有助于限制某些公钥仅执行特定操作。一个示例可能是允许远程备份的密钥,但仅此而已。请注意,可以明确指定客户端 TCP 和/或 X11 转发,除非它们被禁止。最初由客户端提供的命令在 SSH_ORIGINAL_COMMAND 环境变量中可用。请注意,此选项适用于 shell、命令或子系统执行。另请注意此命令可能会被 sshd_config (5) ForceCommand 指令或嵌入在证书中的命令所取代。

使用此选项,当此密钥用于身份验证而不用于其他身份验证时,可以强制执行给定命令。这不是您要查找的内容。
要在登录后运行命令,您可以在文件 ~/bashrc 中添加如下内容:

if [[ -n $SSH_CONNECTION ]] ; then
    echo|mail -s ${USER},${HOSTNAME} a.monitored.email@example.com"
fi

其次,需要验证authorized_keys文件及其所在文件夹/父文件夹的权限。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

欲了解更多信息,请参阅:https://www.complang.tuwien.ac.at/doc/openssh-server/faq.html#3.14

【讨论】:

  • 我希望仅在成功验证 SSH 连接时才执行命令,而不是从后来也获取 SSH_* 变量的子 shell 执行命令。文件烫发看起来不错。但是感谢您的链接。
  • 谢谢 而且我的方法也行不通 - 它执行了命令并退出,非常彻底地破坏了我的目的!再次感谢
  • openssh.org 上的常见问题解答链接现在是 404。他们似乎已经从网站上删除了整个常见问题解答。
猜你喜欢
  • 2019-03-22
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 2020-10-22
  • 1970-01-01
  • 2012-04-20
相关资源
最近更新 更多