理解:
1. 一直以來都是經過密碼遠程 ssh 登陸到 linux服務器
2. 最近學習 Docker 老是看到你們都設置成密鑰方式登陸
3. 除了密碼被破解的風險以外,到底還有哪些好處?
4. 看到有個文章寫到:若是有員工離開,只須要刪除他的公鑰,這還有點兒用!
5. 可是密碼仍是要修改的吧!改密碼和刪除公鑰,哪一個更直接有效?
測試環境、測試目標
linux 客戶端(192.168.1.191): 環境: VisualBox虛擬機 ubuntu 18.04 Server
Mac 客戶端 (XXXXXXXXXXXXXX):
Windows 客戶端(192.168.1.174): 環境: VisualBox虛擬機 Win10
服務端(192.168.1.192): 環境: VisualBox虛擬機 ubuntu 18.04 Server
目的:使用密鑰方式ssh登陸到 192 服務器
方式說明:
1. 有些文章介紹的都是從服務端建立好私鑰、公鑰,而後下發給客戶端,也是能夠實現的
2. 我這裏將私鑰、公鑰的生成交給客戶端生成
3. 我認爲客戶端本身負責生成私鑰、公鑰,再將公鑰交給管理員上傳(或編輯),利於控制和管理
檢測、安裝 sshd
ps -ef |grep sshd
通常安裝過程最後會提示安裝那些組件,若是忘記了選擇 openssh-server
只好在這裏從新安裝一次
sudo apt-get install openssh-server
服務端 sshd 配置修改
1. 修改 sshd_config
sudo vim /etc/ssh/sshd_config 修改如下 4 處
# by wzh 20190114 yes--no
StrictModes no
# by wzh 20190114
PubkeyAuthentication yes
# by wzh 20190114
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
# by wzh 20190114 yes ---no ,can not use password to SSH
PasswordAuthentication no
** 這一處最好等測試密鑰方式正確以後,再單獨修改!
2. 創建公鑰key 保存文件
sudo mkdir .ssh
cd .ssh
sudo touch authorized_keys
sudo vim authorized_keys
加入 pubkey
3. 重啓 SSHD
sudo systemctl restart sshd
一、從 linux ssh 到 linux
1. 在 191 客戶端 上創建密鑰對
ssh-keygen
簡單起見,一路回車!passphrase 也是空着!
2. 確認公鑰私鑰文件是否生成
ls
authorized_keys id_rsa id_rsa.pub
3. 上傳 191 本身的公鑰到 192
ssh-copy-id -i ~/.ssh/id_rsa.pub dhbm@192.168.1.192
或者直接在當前目錄
ssh-copy-id -i id_rsa.pub dhbm@192.168.1.192
返回結果以下:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host '192.168.1.192 (192.168.1.192)' can't be established.
ECDSA key fingerprint is SHA256:7CHsZoFn6YJ7RInEerqfKmKc0dw/TGpRK0Tca8piTCI.
Are you sure you want to continue connecting (yes/no)?
4. 測試一下
ssh dhbm@192.168.1.192
由於以前是密碼方式,第一次可能還會要求輸入密碼
Ok
5. 刪除測試
在 192 服務器上 cd .ssh ,rm authorized_keys
這是我本身測試,只有一個用戶,能夠簡單刪除 authorized_keys 文件
若是多人操做,只能打開 authorized_keys 文件,刪除對應的記錄
authorized_keys wen jian文件內容以下圖:
![](http://static.javashuo.com/static/loading.gif)
$ ll
total 24
drwx------ 2 dhbm dhbm 4096 Jan 11 17:15 ./
drwxr-xr-x 15 dhbm dhbm 4096 Jan 11 17:15 ../
-rw------- 1 dhbm dhbm 401 Jan 11 17:15 authorized_keys
...
再次 測試 191 ssh 到 192
ssh dhbm@192.168.1.192
dhbm@192.168.1.192's password:
** 回到了以前的密碼方式
** 等確認一段時間以後,再來去掉密碼方式登陸
6. 重複以上 ssh-copy-id 再來!此次就不要再刪除了!
二、從 Mac 客戶端到 192 服務器
1. 和以上 Linux 操做同樣的次序,在 Mac 上創建密鑰對
ssh-keygen
返回結果:
...
Your identification has been saved in /Users/dhbm/.ssh/id_rsa.
Your public key has been saved in /Users/dhbm/.ssh/id_rsa.pub.
1. 上傳 Mac 的公鑰到 192 服務器
ssh-copy-id -i ~/.ssh/id_rsa.pub dhbm@192.168.1.192
3. ssh 測試
ssh dhbm@192.168.1.192
三、從 Mac 到 192 上的 Docker (非 22 端口)
1. 按照網上搜索到的方法(直接 cd .ssh 目錄下操做)
ssh-copy-id -i id_rsa.pub "-p 10033 root@192.168.1.192"
返回錯誤:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
-f: force mode -- copy keys without trying to check if they are already installed
-n: dry run -- no keys are actually copied
-h|-?: print this help
2. 去掉引號
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 10033 root@192.168.1.192
ok!
四、從 Windows putty 到 192 服務器
1. 下載 putty 和 putty gen
下載地址不少,我是從 CSDN 下載的
https://download.csdn.net/download/baolang00/10529977
2. 首先打開 putty gen生成 公鑰私鑰
** 生成的時候很是慢,頭幾回不知道技巧的時候,每次都等待了將近 40 分鐘!
** 技巧: 看到進度條,沒事就在下面的空白處點鼠標!點鼠標!!點鼠標!
![](http://static.javashuo.com/static/loading.gif)
3. 保存私鑰、key 和 公鑰
1)、保存私鑰 : 必須
2)、複製保存key:必須
3)、保存: 非必須
![](http://static.javashuo.com/static/loading.gif)
4. 將以上 key 內容發送給管理員,上傳(直接編輯粘貼)到服務器
** 客戶端保存以後文件夾內容以下
![](http://static.javashuo.com/static/loading.gif)
** 服務端加上公鑰以後以下
![](http://static.javashuo.com/static/loading.gif)
5. 開始 putty SSH 鏈接
1)、設置登陸帳號
![](http://static.javashuo.com/static/loading.gif)
2)、加載本身的私鑰
![](http://static.javashuo.com/static/loading.gif)
3)、保存本次會話(Session)
![](http://static.javashuo.com/static/loading.gif)
** 能夠在測試成功以後,從新操做一次的時候保存
** 後續操做就能夠直接加載(load)
4)、成功的話,就以下圖,直接進入了服務器
![](http://static.javashuo.com/static/loading.gif)
5. 錯誤處理:老是看到 server refused our key
修改 192 服務端 sshd 配置(vim /etc/ssh/sshd_config)
** 以前都是 linux 之間操做,因此,都是嚴格模式 (StrictModes )
1)、#StrictModes yes 去掉註釋,改爲 StrictModes no
2)、#PubkeyAuthentication yes 去掉註釋,改爲 PubkeyAuthentication yes
3)、#AuthorizedKeysFile .ssh/authorized_keys 改爲 AuthorizedKeysFile .ssh/authorized_keys
4)、保存退出,重啓 sshd