ssh無密碼登入原理及配置步驟

2021-08-08 23:33:14 字數 2819 閱讀 6037

是否在為每次登入伺服器都要輸入密碼感到煩惱,想不想一次配置,以後直接免密碼登入~~來,心動不如行動動!

需求:a機器想要從此以後免密碼登入到b機器(ssh username@ip(b)直接登入,不再要求輸入密碼)

參考公鑰(yue,四聲)和私鑰

既然要a機器免密碼登入b機器,那麼a機器只是不用密碼這種方式作為驗證自己使用者身份的方式了,而是換成了連線過程中的加密和解密驗證。

簡單說來,我們作免密碼登入的配置過程,就是在和b機器說:以後凡是a機器來登陸,你確認是他的身份後,就讓它直接上你就行了~

那麼關鍵就是,如何確認a機器的身份?這裡就涉及到公鑰和私鑰的知識。

公鑰和私鑰都是成對出現的,它們顧名思義是一對鑰匙,鑰匙既可以用來解鎖(開鎖),也可以用來加鎖(關鎖)。在網路上我們傳輸重要資訊,如銀行卡的賬戶密碼時,一般都是需要在傳輸過程加鎖,傳輸到目的地後解鎖的,這樣可以防止過程有人抓包,直接截獲了重要資訊。另外,也要防止一點是,有人截獲資料報後,惡意傳送假的資料報到對面,破壞兩邊原本正常的溝通。

綜上,安全的隱秘交流的關鍵在於確認兩點:

而一種比較傳統的加鎖解鎖方式是想要保證安全通訊的兩個人用相同的鑰匙common_key,不管誰要發乙個訊息,先對訊息明文用鑰匙進行加密,使之變成密文,然後通過媒介將密文傳輸給對方,對方再用他手上的鑰匙對密文進行解密,變回明文即可。

這種方式成為【對稱加密】,因為兩方的鑰匙是相同的。

對稱加密方式當然滿足了【安全的隱秘交流】的第乙個要求,即只有有鑰匙的人可以解開密文,但是第二個要求就難以滿足了,因為一旦有第三個人從這兩個人中任意乙個那裡偷到了鑰匙,他就也可以截獲傳輸的密文,並進行解密了,甚至發假密文給對面,這樣就不安全了。

於是更安全的【非對稱解密】應運而生。

非對稱解密即通訊的兩個人,每個人手上各有兩把獨一無二的鑰匙,分別稱為公鑰(public_key)和私鑰(private_key)。公鑰和私鑰都可以對訊息進行加密和解密,並且,公鑰加密的密文只有用對應的私鑰才能解鎖,而私鑰加密的密文也只有對應的公鑰才能解鎖。而不同之處在於,公鑰顧名思義,可以給公開的,可以給任何其他人的,而私鑰不行,只能它本身的主人乙個人擁有。

那麼非對稱加密如何保證【安全的隱秘交流】的兩點同時滿足呢?

首先,如果a想給b傳資訊,那麼首先需要用b的公鑰給明文加密,以保證只有擁有私鑰的b本人可以解鎖密文。另外,a會用自己的私鑰給密文再加一次鎖,這樣b在收到密文時,就需要先用a的公鑰給密文解鎖,如果解鎖成功,說明沒毛病,這個密文是a發的。如果解鎖失敗,說明是有人冒發的。那麼,通過這種非對稱加密的方式,我們就實現了真正的安全交流。

不過,基本滿足了【安全的隱秘交流】之後,依然還有問題,依然還是可以有心懷不軌之人偷私鑰來搞事呀?(公鑰沒必要偷,本來就是公開的,偷了也幹不了什麼壞事,可以用邏輯想一想)這種可能確實存在,永遠沒有絕對安全的通訊方式(你也可以用刀架在人脖子上要金鑰嘛不是),但是相對來說,這種可能性已經很小了。再說,如果第三人想竊聽兩個人的私密交流,就必須偷到兩邊的私鑰,只有一邊的私鑰的話就只能解密這一方的密文,這就比原來對稱加密隨便偷一邊的鑰匙就可以完全操控交流過程安全多了。

回到ssh登入的問題:

我們想要a機器免密碼登入到b機器,那麼b機器要確認是a的身份,只要b機器拿a的公鑰去嘗試解密a發過來的、a用自己私鑰加密的密文,能解密成功不就說明是a了。

所以,我們接下來的配置的主要工作也就是:

1.a機器生成私鑰和公鑰

2.將a機器的公鑰給到b機器,並將a機器的公鑰寫到乙個b機器的特權檔案裡,凡是寫到這個特權檔案裡的公鑰對應的機器,都可以通過非對稱加密,即免密碼的形式登入b機器。

既然原理都搞清楚了,來,開始幹活~

a機器在shell中輸入命令:

ssh-keygen -t rsa -p ''  # ssh-keygen -t [rsa1/rsa/dsa] [-p '']
t引數表示選擇加密型別,可以使用:「rsa1」(ssh-1) 「rsa」(ssh-2) 「dsa」(ssh-2),選擇其中乙個就可以,不寫的話預設為dsa方式。

p引數表示輸入舊的密語passphrase。這個密語是指對已有的金鑰設定的訪問密碼,防止其他人隨意篡改。因為之前沒有生成過本機金鑰,所以密語肯定也是沒有的,因此我們直接用兩個單引號』'表示沒有舊密語。當然也可以不要p這個引數,不過那就會需要你後面再輸入舊的密語,你就得按三次回車,加了這個引數,按一次回車就ok了。(另外,新版本的ssh-keygen它可能會提示你輸入金鑰檔案的名稱,你輸入乙個你喜歡的即可,比如這裡我們用』demo』舉例。)

命令執行完成後(假設選擇生成rsa型別金鑰),會在你執行ssh-keygen的當前目錄下生成兩個檔案,乙個』demo』表示a機器私鑰,乙個』demo.pub』表示a機器的公鑰。

同樣地,先登入到b機器上,並也呼叫相同的ssh-keygen命令,在b機器上也生成金鑰檔案。

跨機器拷貝用scp命令即可。

scp ./id_rsa.pub(公鑰在a機器上的路徑) username@ip(b機器ip或網域名稱):/root/(隨便先放乙個b機器的路徑下都可以)

scp傳輸完成後,登入b機器,然後用cat命令將a機器的公鑰資訊id_rsa.pub的內容追加到b機器的許可權檔案authorized_keys中,許可權檔案在b機器的.ssh下。(如果b機器的.ssh下沒有許可權檔案,直接vi或者touch生成乙個新檔案,命名為authorized_keys就可以)

cat ./id_rsa.pub >> /root/.ssh/authorized_keys
另外,為了滿足ssh安全協議的要求,還需要兩個許可權設定操作:

chmod 700 ./.ssh

chmod 600 ./.ssh/authorized_keys

大功告成,現在你應該就可以通過a機器免密碼登入b機器了~~

配置ssh無密碼登入

場景 現在有4臺機器,分別是 master node1 node2 node3現在需要配置從master無密碼ssh登入到node1,node2,node3。這裡有root使用者為例,有些系統可能預設不支援root使用者ssh登入,需要改改ssh配置檔案 在所有機器上生成key ssh keygen...

配置SSH無密碼登入

首先進入目錄 home zuoyan ssh 在 的 ssh 下 使用命令生成金鑰 ssh keygen t rsa敲4下回車 然後將公鑰配置到需要的機器上,複製的目標機器最後是使用者名稱和當前機器的使用者名稱一致,這樣可以減少配置的麻煩!使用命令 ssh copy id hadoop 01.zuo...

centOS配置SSH無密碼登入

最近在搭建利用vm搭建區域網,作業系統為centos6.5,這裡介紹下利用ssh copy id來配置無密碼登入。假設我們有三颱主機,host1,host2,host3,在安裝ssh服務之後,我們就可以開始配置了。host1 ssh keygen t rsa cat ssh id rsa.pub s...