2014-04-21 65 views
1

我正在尋找一些幫助來顯示登錄橫幅,當連接到遠程服務器使用SSH顯示一條消息,然後用「是或否」提示用戶。只有在輸入「是」時,纔會提示用戶在SSH期間輸入密碼。SSH安全外殼服務中的用戶協議橫幅

我知道登錄橫幅可以使用/etc/issue.net配置,然後在/ etc/ssh/sshd_config中取消註釋行Banner,然後重新啓動SSH。但是,如果我另外需要SSH來顯示橫幅後提示接受策略橫幅,我該如何解決?

非常感謝您的幫助。

+0

在首先發布密碼之前要求用戶同意所需的任何策略是否更有意義?這對於大概授權的用戶登錄來說似乎是不必要的障礙。 – chepner

+0

我明白了。但是,只有當他們接受說「是」時,我們纔會進一步追求 – user3516942

+0

我認爲第二句話是基於對SSH工作方式的誤解。 AFAICT ssh服務器無法向用戶顯示任何內容,直到用戶通過身份驗證之後。 (另外,如果用戶將公鑰上傳到'authorized_keys'文件,它們將不會被提示輸入密碼。) – dcorking

回答

0

你可以使用這樣的事情:

#!/bin/bash 
cat /usr/share/agreement.txt 
read -p "Do you accept? (y/n) " choice 
if [[ $choice = y ]] ; then 
     /bin/bash 
fi 

與協議的內容創建文件/usr/share/agreement.txt並使腳本可執行文件(使用chmod +x)。

然後編輯/etc/passwd並設置命令運行到該腳本的路徑(例如/usr/share/agreement.sh)。

+0

謝謝Louis。但是,在用戶接受協議後,在/ etc/passwd中,它仍然應該根據用戶名/密碼進行認證。在上面,當你輸入「yes」時,爲什麼我們有/ bin/bash? – user3516942

+0

此外,由於/ etc/passwd包含以下形式的條目:名稱:密碼:UserID:PrincipleGroup:Gecos:HomeDirectory:Shell,我們將在哪裏設置命令來運行路徑agreement.sh – user3516942

+1

Shell可以[任何命令]( http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/),所以只需用腳本的完整路徑替換'/ bin/bash'即可。 –