ssh密鑰登錄遠程主機配置

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功能,保存一個沒有文件擴展名的私鑰文件
    • 所以一共是保存了四個文件
      linux_ssh_puttygen

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文件
發佈了29 篇原創文章 · 獲贊 18 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章