1.什麼是公鑰&私鑰
- public key(公鑰)存放在欲登錄的服務器上,而private key(私鑰)爲特定的客戶機所持有。
- 當客戶機向服務器發出建立安全連接的請求時,首先發送自己的public key,如果這個public key是被服務器所允許的,服務器就發送一個經過public key加密的隨機數據給客戶機,這個數據只能通過private key解密,客戶機將解密後的信息發還給服務器,服務器驗證正確後即確認客戶機是可信任的,從而建立起一條安全的信息通道。
- 通過這種方式,客戶機不需要向外發送自己的身份標誌“private key”即可達到校驗的目的,並且private key是不能通過public key反向推斷出來的。這避免了網絡竊聽可能造成的密碼泄露。
- 客戶機需要小心的保存自己的private key,以免被其他人竊取。
- 這就是爲什麼先在本地生成密鑰,而不是在登錄你的vps以後生成然後把私鑰下載到本地,任何時刻都要保證私鑰處在一個安全的地方
2.本地客戶機(windows)生成密鑰對
- 如果本地客戶機是linux系統,可參考這裏的第二點生成密鑰對,使用指令生成(其實windows下也可以用指令生成=。=)
- 在官網下載puttygen.exe
- 直接運行puttygen.exe在本地生成密鑰對(在空白框內隨機滑動鼠標會加快生成速度)
- 保存密鑰對
- 第二欄修改的是公鑰最後==後面的備註信息,可以不改
- 第三欄是使用私鑰的時候需要額外的密碼,可不填
- save public key && save private key
- 複製界面中的公鑰內容到一個txt文件中保存
- 由於默認保存的私鑰文件是.ppk格式,這是windows下使用的格式,要轉換成linux下使用的格式需要使用Conversions中的Export OpenSSH key功能,保存一個沒有文件擴展名的私鑰文件
- 所以一共是保存了四個文件
3.配置遠程主機
(1) 密碼登錄需要ssh登錄的用戶your_username
(2) 安裝openssh
- ubuntu:
~: sudo apt-get update
~: sudo apt-get install ssh
~: ssh -V
顯示ssh版本號即表示安裝成功,這時候~路徑下會多一個隱藏的.ssh文件夾;這時候需要修改.ssh文件夾的擁有者:sudo chown -R your_username:your_username /home/your_username/.ssh
。
如果沒有這個隱藏文件夾,那可能需要重新裝裝一下ssh;如果確認已經裝好了ssh,那麼就手動創建一個.ssh文件夾並修改權限,和下面的Centos的操作相同。
- Centos:系統默認就已經安裝好openssh服務了,可以使用
ssh -V
查看ssh的版本號確認是否安裝;但是是沒有.ssh文件夾的,所以需要在~路徑下自己創建,並修改權限(必須)。
~: mkdir .ssh
~: chmod 700 ~/.ssh
(3) 創建authorized_keys文件,並將已生成的公鑰內容複製到該文件中,保存,最後修改該文件的權限(必須)
~: cd .ssh
~/.ssh: touch authorized_keys
~/.ssh: vi authorized_keys
~/.ssh: chmod 600 authorized_keys
(4) 修改 /etc/ssh/sshd_config
文件的配置內容 (建議先測試ssh能否登陸成功再回頭禁止密碼登錄=。=)
~: sudo su
~: vi /etc/ssh/sshd_config
## 允許root登錄
PermitRootLogin yes
## 使用密鑰登錄
RSAAuthentication yes
PubkeyAuthentication yes
## 禁止空密碼和密碼登錄
PermitEmptyPasswords no
PasswordAuthentication no
## 監聽端口(一般默認是22,或者是自己已開的端口,不改即可)
Port 22
(5) 重啓ssh服務(每次修改ssh的配置文件都要重啓服務):
- Centos下:
sudo service sshd restart
- Ubuntu下:
sudo service ssh restart
4.使用ssh密鑰登錄
- windows下登錄:斷開終端,選擇使用密鑰登錄,如果私鑰設置了額外密碼,導入私鑰文件時需要輸入額外密碼。(xshell使用的是openssh key格式的密鑰,winscp使用的是ppk格式的密鑰)
- linux下登錄:退出遠程主機,需要將私鑰複製到
~/.ssh/your_privateKey
,然後重新打開終端執行:
ssh your_username@server_ip
5.openssh格式密鑰轉ppk格式
- 運行puttygen.exe
- 點擊file→Load private key,將openssh格式的私鑰加載進去
- 然後點擊conversions→Export ssh.com key,即可轉換成ppk文件