[轉] SSH 金鑰認證機制

來源:互聯網
上載者:User

標籤:

使用 RSA 金鑰組進行 SSH 登入驗證

使用 RSA 金鑰組驗證 SSH 的優點是 1) 不用打密碼 2) 比密碼驗證更安全;缺點是 1) 第一次配置的時候有點麻煩 2) 私密金鑰需要小心儲存。Anyway 用密鑰驗證比密碼驗證還是方便不少的。推薦所有使用者使用密鑰認證。

目錄

  1. 產生金鑰組
  2. 上傳密鑰
  3. ~/.ssh 相關檔案許可權
  4. Over~
  5. 附:公開金鑰加密原理
    1. 進一步閱讀

 

1. 產生金鑰組

OpenSSH 提供了ssh-keygen用於產生金鑰組,不加任何參數調用即可:

 

 

% ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/home/xiaq/.ssh/id_rsa): 

如果你以前沒有產生過金鑰組,直接斷行符號就行。然後會問你“passphrase”,這是用來加密私密金鑰的密碼。如果你不知道怎麼用,直接用空密碼也行(當然,這樣會降低安全性)。按兩次斷行符號後金鑰組就產生好了:

 

 

Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/xiaq/.ssh/id_rsa.2.Your public key has been saved in /home/xiaq/.ssh/id_rsa.2.pub.The key fingerprint is:8a:77:ec:a1:77:42:8d:5d:ab:17:33:ac:87:06:20:3c [email protected]The key‘s randomart image is:+--[ RSA 2048]----+|                 ||                 ||   .             ||    E .     .    ||     o .S+ o .   ||     . o+ o *    ||    . o.+. + +   ||     . +o.* o    ||      ...+ o     |+-----------------+

嗯,會有一堆很花哨的輸出,可以全都不管。這樣在你剛才指定的地方就有了一對密鑰,其中私密金鑰就是上面指定的名字,公開金鑰則多一個“.pub”尾碼。

 

不要把你的私密金鑰和任何人分享。公開金鑰可以到處分發。

 

2. 上傳密鑰

把你的公開金鑰用scp上傳到了遠程遠程ssh伺服器,並把公開金鑰的內容追加到ssh伺服器的 ~/.ssh/authorized_keys:

 

 

% scp ~/.ssh/id_rsa.pub [email protected]:% ssh [email protected]% cat id_rsa.pub >> ~/.ssh/authorized_keys

或者等價地

 

 

% cat ~/.ssh/id_rsa.pub | ssh [email protected] ‘cat >> ~/.ssh/authorized_keys‘

COMMENT: 顧名思義,authorized_keys 裡面可以存多個公開金鑰。所以在這裡用 cat id_rsa.pub >> ~/.ssh/authorized_keys。不過,如果你以前沒有這個檔案,直接 cp id_rsa.pub ~/.ssh/authorized_keys 也是可以的……

如果你的 ~ 下沒有 .ssh 目錄,建立之即可。

NOTE: OpenSSH 提供了一個指令碼ssh-copy-id用於上傳公開金鑰。其作用就是自動化完成以上的操作,例如在自己的機器上執行

 

$ ssh-copy-id -i .ssh/id_rsa.pub [email protected]

man ssh-copy-id完整文法 ssh-copy-id [-i public_key] [[email protected]]machine

 

3. ~/.ssh 相關檔案許可權

為防止你的私密金鑰被惡意使用者擷取和/或篡改,以及你的公開金鑰資訊被惡意使用者篡改,ssh 對 ~/.ssh 的檔案許可權有著嚴格的要求。如果許可權不對,公開金鑰驗證不會正常工作。

NOTE: 準確說來,這取決於 sshd 的配置。但不管怎樣,出於安全性考慮,按如下步驟設定檔許可權還是必要的。

在本地和遠程兩台機器上,都確認 ~/.ssh 目錄只有你有 rwx 許可權,其他人沒有任何許可權:

 

% pwd/home/xiaq% chmod 700 .ssh% ls -dl .sshdrwx------ 2 xiaq xiaq 4096 Jun  6 11:29 .ssh/

在本地機器上,確認私密金鑰只有你有 rw 許可權,其他人沒有任何許可權:

 

% pwd/home/xiaq/.ssh% chmod 600 id_rsa% ls -l id_rsa-rw------- 1 xiaq xiaq 1679 Apr  1 20:39 id_rsa

類似地,確認遠程機器上的 ~/.ssh/authorized_keys 只有你有 rw 許可權:

 

% pwd/home/xiaq/.ssh% chmod 600 authorized_keys % ls -l authorized_keys -rw------- 1 xiaq xiaq 394 2011-04-18 13:40 authorized_keys

 

4. Over~

一切順利的話,你現在就可以不打密碼直接 ssh 了。

不 過,如果你在產生 SSH 金鑰對時,為了更安全設定了 passphrase 了的話,ssh 登入時會請你輸入 passphrase。為了不用每次都輸,可以用 ssh-agent 和 ssh-add,在 X會話或登入session時 ssh-agent 作為 daemon 啟動,它儲存私密金鑰用於公開金鑰認證,其他程式作為 ssh-agent 的客戶就可以在該會話中實現自動認證。Debian, Fedora 上 ssh-agent 已經被自動啟動。

使用 ssh-add 添加私密金鑰:

ssh-add id_rsa_file

不帶檔案參數時,會添加 $HOME/.ssh/id_rsa, $HOME/.ssh/id_dsa 和 $HOME/.ssh/identity。 ssh-add 時需要輸入一次 passphrase。之後在同一次會話中的 ssh 遠程登入都不再需要輸入。

 

5. 附:公開金鑰加密原理

公開金鑰加密 (public-key cryptography),或非對稱金鑰密碼編譯 (asymmetric key cryptography) 是一類廣泛使用的密碼編譯演算法。這類演算法使用一對密鑰即公開金鑰 (public key) 和私密金鑰 (private key)。其中公開金鑰可以隨便分發,只用於加密 (encryption),私密金鑰則只由一人持有,只用於解密。任何一個資訊用公開金鑰加密之後,用私密金鑰解密即可得到原來的資訊,反之則不一定。

公開金鑰加密的關鍵點在於,一方面,公開金鑰加密是可逆的,但是不能用公開金鑰推斷出私密金鑰。顯然數學上,已知一個公開金鑰是能夠算出對應私密金鑰的,但是只要設計足夠好的密碼編譯演算法(以及使用足夠複雜的金鑰組),使得不能在可以接受的時間內破譯即可。

RSA 是一種常見的公開金鑰加密演算法。RSA 的工作原理依賴於如下事實:破譯 RSA 私密金鑰需要對某些極大的整數進行因數分解,而目前尚未找到快速的對極大整數作因數分解的演算法。換言之,如果有人找到了這樣的演算法,那麼全世界的 RSA 加密都會失效。

RSA是由Ron Rivest, Adi Shamir, Leonard Adleman三人在1978年首次提出的。三人並因此項工作榮獲了2002年Turing Award。周時,Rivest還是演算法導論的作者之一,書中在31章對RSA系統的原理進行了簡要說明,系統實現中利用到了數論中的Euler-Fermat theorem。

COMMENT: 但不管怎麼,極大整數的因數分解還是可能的。RSA_Laboratories舉辦過多次懸賞破譯 RSA 的活動,更多資訊可以看看 RSA_Secret-Key_Challenge。

儘管隨著密碼學的發展,RSA 的安全性已經越來越受到威脅,但是未來能誕生可以在多項式時間內破譯 RSA 的可能性還是非常小的。也就是說,除了軍方、金融等高危目標之外,RSA 還是適用的。

 

5.1. 進一步閱讀

公開金鑰加密

Public-key_cryptography

[轉] SSH 金鑰認證機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.