2014-10-03 195 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