關於ssh,幾乎每個人都同意金鑰要優於密碼,更安全,並且更先進,但我並不同意這個觀點。
雖然金鑰的確可以更好,但它有著還沒被意識到的嚴重風險,並且我認為比得到妥善管理的密碼更不安全。
通常金鑰更好的理由是多數人使用了弱密碼,並且系統之間共享密碼,所以一旦發生密碼洩漏就會同時危害到多個系統。既然金鑰可以設定口令,那麼同時擁有兩者(金鑰和口令)的它當然就更安全了。
這的確沒錯,但是在大多數得到妥善管理的環境中事實上並非如此,他們沒明白真正的風險到底源自**,來自哪一步。
舉個例子,如果我們在每個地方都使用硬性的隨機密碼,並且不在兩個系統、服務,等等之間共享任何密碼,在系統搭建的時候就使用工具和流程來這麼做,那麼由於密碼很少變更,系統將會長期安全。乙個關鍵問題是大部分的安全設定應該在第一次安裝系統時由某種機制自動完成。
金鑰是完全不同的。的確,乙個好的系統應該生成好的金鑰,並且不共享它,哪怕管理這麼多的金鑰檔案要比管理同樣多的密碼困難得多地多。金鑰很難去移動(特別是要走ssh閘道器的時候)、儲存、命名、組織和共享,等等。這些都是缺點,並且會產生風險。
金鑰要做到安全,就需要口令,但是很少金鑰有口令,即便有,工程師也常常為了使工作輕鬆而移除它們,而且每一次使用都可能有機會被移除口令或者被拷貝到其他地方,一旦發生這種事情,安全性就會永久性地降低了。
更嚴重的是,金鑰檔案提供訪問所需的一切,如果使用者沒有常識那麼就可能被盜,通常是坐不受保護的位置,並以明文的形式從他們的機器上被盜。理論上來說,使用者可以為金鑰設定口令,但是他們很少這麼做,這也是風險的所在 —— 如果我黑進了你的電腦或者ssh閘道器,那麼我就可以在你不知道的情況下登入到你的所有系統,而密碼不可能。這正是我反對使用金鑰的核心問題 —— 你所有伺服器的安全性,其實和你最弱的客戶和工程師的機器安全性是一樣的,那可能只是臺個人筆記本,智慧型手機,或者家用電腦,並且感染了各種各樣的木馬和病毒,哪一種都可以讀取你的金鑰!
好的密碼則相反,被儲存在類似keepass的工具裡,基本上不可能被盜,特別是大批量的。
解決金鑰安全問題的唯一辦法是設定口令,但是不太可能,忙到要死的工程師會經常去除口令的。理論上來說ssh協議可以被增強到報告金鑰種類和是否使 用了口令,但是因為這是在客戶端做的檢查,所以伺服器無法信任它。不存在乙個簡單的辦法來強制設定口令,因此多數的金鑰是不受保護的,並且不安全。
更進一步,對於大型系統,當我們擁有5,000臺伺服器的時候,哪種方式更加易於管理,是金鑰還是密碼?當然,ldap是一種解決方案,但只能用於一些特性系統,而且我們也不可能強制所有客戶都使用ldap,所以我們還是得面對管理金鑰還是密碼的問題,顯然,管理密碼要容易得多。我們知道各種型別和用途的密碼系統,但很少聽說有哪個金鑰系統 —— keepass可以處理金鑰檔案,進行剪下粘帖,但沒有任何實際有用的大規模處理方式。
最後,歸結為乙個問題,哪一種方式更容易得到正確地管理,是帶口令的金鑰,還是複雜的隨機密碼。對我來說,密碼贏了。如果您使用了金鑰,那麼現在請為它加上口令。
SSH使用金鑰登入並禁止密碼登入
1 新建用於登入的使用者 useradd p echo kymo4clpt1 openssl passwd 1 salt dev urandom tr dc alnum head c 32 stdin 9pz7ier8 kymo4clpt1 用於ssh登入的使用者密碼 9pz7ier8 用於ssh登...
git使用ssh金鑰
git使用https協議,每次pull push都需要輸入密碼,相當繁瑣。使用git協議,使用ssh金鑰,解決問題。大概需要三個步驟 一 本地生成金鑰對 二 設定github上的公鑰 三 修改git的remote url為git協議。一 ssh keygen t rsa c 郵箱賬號 注意 需要點三...
ssh 免密碼登入 金鑰登入
原文 ssh 免密碼登入 此方法配合ssh 別名登入可以快速登入伺服器 此方法配合ssh tab 自動補全主機名 別名可以快速登入伺服器 ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b ...