2014-10-03 197 views
1

我读man sshd可以添加登录后处理当用户登录使用特定的键:如何的.ssh命令添加/ authorized_keys中

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

但是当我尝试通过SSH进入系统,目标主机不会注册该行,而是要求输入密码。什么是正确的方式来添加这个?我想做类似

command="echo|mail -s ${USER},${HOSTNAME} [email protected]" ssh-rsa AAA... keytag 

我正在使用Suse SLE 11 SP2。

由于 的Dinesh

+0

与AuthorizedKeysCommand现在尝试是和AuthorizedKeysCommandRunAs没有人 – Dinesh 2014-10-03 04:40:59

回答

1

首先,根据documentationcommand = "command"

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

使用此选项,可以强制执行给定的命令时,此密钥用于身份验证,没有other.This不是你正在寻找。

if [[ -n $SSH_CONNECTION ]] ; then 
    echo|mail -s ${USER},${HOSTNAME} [email protected]" 
fi 

其次,你需要验证authorized_keys文件的权限和它所在的文件夹/父文件夹:
要登录后,你可以在文件中添加~/bashrc像这样运行命令。

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

欲了解更多信息,请参阅http://www.openssh.org/faq.html#3.14

+0

我期待执行从后子壳仅在SSH连接成功认证的命令,而不是它太让SSH_ *变量。文件烫发看起来不错。但感谢链接。 – Dinesh 2014-10-03 04:38:32

+0

@Dinesh也许这将工作http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch08_04.htm – 2014-10-03 13:33:14

+0

谢谢而且我的方法不会奏效 - 它执行命令并退出,击败我的目的非常香甜!再次感谢 – Dinesh 2014-10-06 03:52:15