首先看SSH免密登入簡易原理圖: 主機A想要SSH免密登入主機B, 首先需要将主機A的SSH公鑰複制到主機B的授權清單檔案, A登入B時,B會檢視自己的授權清單檔案, 若存在A的公鑰,經過一系列驗證後,即可登入
首先準備兩台主機 SSH-A 和 SSH-B(注意:兩台主機必須能 ping 通)
我的 SSH-A 主機的 IP 是:192.168.198.12,
SSH-B 主機的 IP 是:192.168.198.13 ,
!!!!SSH Key 是針對主機中某一個使用者的, 每個使用者的SSH Key都不一樣
開始(主機 SSH-A 免密登入主機 SSH-B):
1. 在 SSH-A 生成 使用者 SA 的 SSH Key
在SA使用者下執行下面的指令: ssh-keygen -t rsa
中間的出現 Enter passphrase(empty for no passphrase) 和 The key fingerprint is 直接回車, 預設的就行
2. 預設生成的 .ssh 目錄預設儲存在使用者主目錄下(我這的使用者主目錄是/home/SA ),進入.ssh目錄
進入使用者主目錄, 由于.ssh是隐藏檔案,需使用 ls-all 指令才能看到
3. 将.ssh目錄下的 id_rsa.pub 遠端拷貝到 SSH-B 主機上(遠端拷貝指令 scp)
scp id_rsa.pub [email protected]:/home/SB
此指令的意思是:從本機将 id_rsa.pub 檔案 以 SB 這個使用者的身份 寫到192.168.198.13(SSH-B)主機下的 home/SB 目 錄下, SB 是 SSH-B主機上的一個使用者, /home/SB 是 SSH-B 的使用者主目錄, 中間需要輸入 SB 的使用者密碼
4. 在主機 SSH-B 裡, 進入 /home/SB 目錄(以 SB 這個使用者的身份), 同樣的過程, 為 SB 使用者生成 SSHKey
并進入 .ssh 目錄下
5. 将 SSH-A 的公鑰添加到 SB 使用者 .ssh 目錄下的 authorized_keys 檔案中, 若 authorized_keys 不存在, 則手動建立一 個,注意:authorized_keys 的權限必須為 -rw------,即隻有SB這個使用者可讀可寫, 其他無任何權限
可通過 chmod 600 authorized_keys 修改權限
6. 測試登入, 登陸成功, 大功告成
ssh [email protected] 表示使用 SB 這個使用者 登入 192.168.198.13 主機
追求完美:
1. 遠端登入到别的主機後怎麼 回到原來的主機
從主機SSH-A 登入到 SSH-B主機: ssh [email protected]
回到原來的主機: ssh [email protected]
問題: 登入回源主機時需要輸入 SA 的使用者密碼, 因為我們沒有将 使用者 SA 的 public key 添加到 使用者SA 的
authorized_keys 檔案中, 隻需要在使用者SA 的authorized_keys 檔案中添加 SA 自己 的公鑰, 即可免密切換回源主 機主機
2. 執行 ssh [email protected] 遠端登入時發現還需要輸入密碼
(1). 檢查檔案名是否錯誤, 必須為 authorized_keys
(2). 檢查authorized_keys的權限是否為-rw------
(3). 若(1), (2)都沒問題, 則給 SB 使用者添加超級使用者權限
方法:打開 /ect/sudoers 檔案, 找到 root ALL=(ALL) ALL行,
在這行下面添加一行 SB ALL=(ALL) ALL 即可