2017年8月10日 星期四

讓SSH僅允許用金鑰登入

用ssh登入遠端主機有兩種方式:
  1. 輸入帳號密碼,參考《SSH遠端連線,接視窗回本機使用》
  2. 帳號配合金鑰,參考《SSH遠端登入不用密碼》
第1種方式會遇到不安好心的人士測試帳號密碼,所以對於比較重要的帳號,可以關閉第1種登入的方式,只允許用第2種方式也就是金鑰登入。關閉的方式是設定/etc/ssh/sshd_config,在檔案的最後面加入:
Match User user1,user2,user3
    PasswordAuthentication no

這樣user1,user2,user3就僅僅只能夠用金鑰才能夠登入了
注意!上面兩行一定加到檔案最後,這是因為Match block的效用會一直持續下去到檔案最後面,所以除非有另外一個Match block出現,不然後面的設定就通通都會變成只有user1,user2, user3會設定到。
以上情況的例外是安裝的sshd是openssh 6.5p1(含以上)的版本,那可以多加一行變成:
Match User user1,user2,user3
    PasswordAuthentication no
Match all
經過以上的設定後,重新啟動sshd服務,若再次用帳號密碼登入會出現下面這種訊息:
Permission denied (publickey).
想要知道上面連線的詳細問題出在哪邊,用ssh的verbose來看:
  • ssh -v user1@remoteHost

參考資料

_EOF_

沒有留言:

張貼留言