ssh是一種通訊協議,可以實現遠端安全登入。可以通過如putty、mobaxterm等工具通過ssh安全登入到虛擬機器進行操作。
openssh:ssh遠端安全登入的開源實現(軟體)。
一般mac os和linux系統中均有openssh,windows可以借助xshell等軟體。
ssh之所以能夠保證安全,原因在於它採用了公鑰加密。
當我們使用密碼登陸遠端伺服器,整個過程是這樣的:
①當遠端伺服器收到某個客戶端的登入請求,會準備把自己的公鑰傳送給客戶端。
②客戶端接收儲存後將使用這個公鑰,將輸入的登入密碼加密後,傳送給遠端伺服器。
③遠端伺服器用自己的私鑰,解密公鑰加密過的登入密碼,如果密碼正確,就同意使用者登入。
命令步驟是這樣的(這裡假設遠端主機ip為192.168.2.128
,當然一般肯定不是這個數字):
$ ssh [email protected]
the authenticity of host '192.168.2.128 (192.168.2.128)' can't be established.
ecdsa key fingerprint is sha256:ogcmstimwxfiwnypauskfqv3gx6j/rujy6tq3dvoswi.
are you sure you want to continue connecting (yes/no)?
這段話的意思簡單來說就是,你想要接收遠端伺服器137.36.2.1
的公鑰嗎?
你肯定要確定接收呀,輸入yes
回車
系統會出現一句提示,表示host主機已經得到認可,並將公鑰儲存在檔案$home/.ssh/known_hosts
之中。:
平常我們每次登陸遠端伺服器都要輸入密碼多麻煩啊,而且遠端伺服器開啟密碼登陸可能被黑客暴力試錯破解,因此後面我們會禁止伺服器通過密碼登入,不過我們先實現下免密登入再去那樣做(不然你把密碼登入關了還怎麼登???哈哈):
①首先在客戶端通過特定演算法生成一對秘鑰(公鑰私鑰)
ssh-keygen -t rsa -c "[email protected]"
引數說明:
-t 加密演算法型別,這裡是使用rsa演算法 如果沒有指定則預設生成用於ssh-2的rsa金鑰。這裡使用的是rsa。
同時在金鑰中有乙個注釋字段,用-c來指定所指定的注釋,可以方便使用者標識這個金鑰,指出金鑰的用途或其他有用的資訊。
所以在這裡輸入自己的郵箱或者其他資訊都行
當然,如果不想要這些可以直接輸入(一般也是這麼做的)下面命令:
ssh-keygen
之後會在使用者的根目錄下的.ssh
資料夾生成私鑰id_rsa
和公鑰id_rsa.pub
。本地的.ssh
的資料夾存在以下幾個檔案:
id_rsa : 執行命令後生成的私鑰檔案
id_rsa.pub : 執行命令後生成的公鑰檔案
know_hosts : 已知的主機公鑰清單//ssh命令遠端連線不同伺服器時可以選擇接受到不同的公鑰,會將這些主機的公鑰都儲存在這裡
注意:
執行上面命令後,它要求你輸入加密的一些附加引數,不用管,一般預設就好,一直回車即可生成秘鑰。
②將客戶端的公鑰~/.ssh/id_rsa.pub
通過ssh-copy-id -i
拷貝到伺服器
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@***.***.***.***
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
注意:
執行上面命令後,它要求你輸入加密的一些附加引數,不用管,一般預設就好,一直回車即可生成秘鑰。
②將客戶端的公鑰~/.ssh/id_rsa.pub
通過ssh-copy-id -i
拷貝到伺服器
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@***.***.***.***
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
注意:
此時需要登入到user@***.***.***.***伺服器的密碼(沒錯,這裡又用到了前面ssh密碼登入裡講過的步驟),輸入正確後即可在伺服器生成公鑰,該公鑰儲存在伺服器家目錄的.ssh
的authorized_keys
檔案中(作用:存放遠端免密登入的公鑰,主要通過這個檔案記錄多台機器的公鑰),然後退出即可。
③當客戶端以後再傳送連線請求,包括使用者名稱、ip:
ssh root@***.***.***.***
④伺服器得到客戶端的請求後,就會到authorized_keys
中查詢,如果有響應的使用者名稱和ip,就會隨機生成乙個字串;
⑤伺服器將使用客戶端拷貝過來的公鑰進行加密,然後傳送給客戶端;
⑥得到伺服器傳送來的訊息後,客戶端會使用私鑰進行解密,然後將解密後的字串傳送給伺服器;
⑦伺服器接收到客戶端傳送來的字串後,跟之前的字串進行對比,如果一致,就允許免密碼登入。
是不是很方便呢?
思考:兩台linux如何配置互相免密登入,n臺liunx如何配置互相免密登入。
SSH免密登入
a為本地主機 b為遠端主機 生成公鑰私鑰對 ssh keygen t rsa登入遠端機器 ssh root 然後輸入密碼 將.ssh的許可權設為700 mkdir ssh 如果資料夾已存在,跳過 chmod 700 ssh將本地生成的rsa公鑰複製到遠端機器 scp ssh id rsa.pub r...
SSH免密登入
當我們在配置多台計算,使之可以相互使用無密碼登入 ssh,之前都是一台一台的配置,現在一台a上新增b,然後在另一台b上再次新增a,這樣使得authorized keys中的內容相同,但時並不是完全相同,比如新增順序。如果超過2臺,這種配置就相當複雜了,而且容易出錯。後來,在網上看到了一種簡單的配置,...
SSH免密登入
前提 本地和遠端伺服器都已經安裝了ssh 遠端伺服器ip 192.168.1.145 遠端登入使用者 admin 本地命令 1 ssh keygen t rsa p 一路回車 2 scp ssh id rsa.pub admin 192.168.1.145 home admin ssh 3 按提示輸...