2015-11-20 12 views
0

爲了被允許使用ssh-key登錄,我被要求確保在服務器處於維護模式時任何新的連接都會失敗。通過檢查文件是否存在,我可以確定服務器是否處於維護模式。我到目前爲止所嘗試的是將以下內容放在我的.ssh/rc文件中,但我仍然能夠連接。任何人有更好的解決方案?如果文件存在,則丟棄ssh連接

if [ -e $CHECK_FILE ] 
then 
    echo "Under Maintenance... login disabled" 
    kill -9 $$ 
    #exit -1 
fi 
+3

只需使用['/etc/nologin'](https://www.freebsd.org/cgi/man.cgi?sshd%288%29#FILES)? –

+0

請確保您可以直接以root身份登錄:'echo「在維護中...登錄禁用」>/etc/nologin' – Cyrus

+0

不會'退出'工作? – shellter

回答

1

如果你使用Linux從~/.ssh/rc殺死你自己的sshd:

killall sshd 
+0

謝謝,我應該想到這一點。它只是我正在尋找的東西。我注意到,雖然chepner對此並不適合,但我不負責服務器,也不負責維護。但爲了使用服務器,我必須忍受管理員的任意請求。 – Craig

1

與維護消息,以防止任何登錄經由ssh創建/etc/nologin(或只是殺sshd的持續時間)。

但是,如果維護是通過ssh,那麼你需要讓一些用戶登錄。在這種情況下,更新/etc/sshd_config的東西,如

AllowUsers bob 

,以防止任何人,除非「鮑勃「不能登錄

+0

我會建議這個給服務器維護者,但我只是一個用戶。你知道一種方式讓我自動殺死自己的連接嗎? – Craig

+0

*你放在遠程主機上的任何東西都意味着你可以在執行之前進行連接。這是*真的*不是你,作爲用戶,應該負責。如果管理員不希望人們在維護期間登錄,他們應該讓系統不可用,而不是依賴用戶立即註銷。 – chepner