天天看點

ubuntu生成pem證書連接配接伺服器(已驗證)

作者:生活處處有BUG

SSH 密鑰認證是什麼?

與使用者密碼登入相比,SSH 密鑰認證更安全,因為隻有擁有密鑰的人才能連接配接,并且密鑰通過不同的算法進行了很好的加密。它還通過無密碼登入使 SSH 連接配接變得簡單。

這個搞兩個方案,一個是自己需要登入到伺服器,一個是開賬号給别人登入到伺服器

個人的方案

用戶端生成密鑰對

大多碼農都是windows系統,這裡就以windows來示範了。

在windows系統,按ctrl+r,直接輸入cmd

ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image1

然後在打開的指令行視窗中,直接進入.ssh目錄

$ cd .ssh
           
ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image2

運作指令生成密鑰對(您可以使用現有密鑰或生成新密鑰對)

$ ssh-keygen
           

執行上述指令首先會讓你輸入生成密鑰的檔案名:我這裡輸入的 xjdemo_xiaojin,之後一路回車(也可以輸入密碼,來個雙重保護)

ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image3

在執行指令的目前目錄下會生成一個xjdemo_xiaojin.pub、xjdemo_xiaojin 兩個檔案。

ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image4

在伺服器添加證書

方法一:将公鑰複制到 Ubuntu 主機的最快方法是使用名為ssh-copy-id. 由于其簡單性,強烈建議使用此方法(如果可用,比如有在用Git Bash的老鐵們,就可以直接用這個linux的指令使伺服器自動添加認證這個證書)

$ ssh-copy-id -i ~/xjdemo_xiaojin.pub [email protected]
           
ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image5

方法二:如果您沒有ssh-copy-id可用的,但您可以通過基于密碼的 SSH 通路伺服器上的帳戶,您可以使用傳統的 SSH 方法上傳您的密鑰。

我們可以通過使用cmd的type指令讀取本地計算機上公共 SSH 密鑰的内容并通過 SSH 連接配接将其傳送到遠端伺服器來完成此操作。

$ C:\Users\EDY\.ssh>type xjdemo_xiaojin.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC90tsEOp9oL+iprQ3ig0y8pcpssR18zxCiD19YvkiL3Y3i9Rg6Kwh48wFy+rjhRbyxeMse2U12nGsLh4mEcEXp7uELXlzSwVKxmJ7JBvuiV/B90Cumf03EwALcsdODIY3z2CwLhc0EAd52xsILXsdFGZDoTcvwzlZ1SZC3SgmfFHnkh6QknWZSAt2pwIl/h2t4jG98X6EraEpmynKHQfbnPIFI7U5T3rNjbSp4WkAff39d8teGqCLk4k7KxC6ngFBIz/itGG/W4X2auW85KV7u/Ptp/BeP25zC2LLqvdZoEkJz0GOM50XLdekQV3lbeh4Zy47AuiwF6ooOhqENRYNmbTMw3HAGsLNxB1k3v0AReFSyUO7Zdzqc8jPns9OjAAQXoh2QGcKnuYjPbxNoJTsthlBwhapS/9pXAtLdgjIy+7orxF7aUC0Gg5jk6zqWfsoo54Eu93M26fTl6eRPRDLjm0Xit0JambN04k9QyIX9LiMGoSewNmw1wEj2HiSH/Ts= xiaojing@DESKTOP-9IGE82N
           
ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image6

copy本地的秘鑰,直接echo到authorized_keys檔案,但要小心,是兩個箭頭的,這個是續傳。如果少一個箭頭的話,如把這個檔案原有的資料覆寫掉,估計你得吃席了。

$ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC90tsEOp9oL+iprQ3ig0y8pcpssR18zxCiD19YvkiL3Y3i9Rg6Kwh48wFy+rjhRbyxeMse2U12nGsLh4mEcEXp7uELXlzSwVKxmJ7JBvuiV/B90Cumf03EwALcsdODIY3z2CwLhc0EAd52xsILXsdFGZDoTcvwzlZ1SZC3SgmfFHnkh6QknWZSAt2pwIl/h2t4jG98X6EraEpmynKHQfbnPIFI7U5T3rNjbSp4WkAff39d8teGqCLk4k7KxC6ngFBIz/itGG/W4X2auW85KV7u/Ptp/BeP25zC2LLqvdZoEkJz0GOM50XLdekQV3lbeh4Zy47AuiwF6ooOhqENRYNmbTMw3HAGsLNxB1k3v0AReFSyUO7Zdzqc8jPns9OjAAQXoh2QGcKnuYjPbxNoJTsthlBwhapS/9pXAtLdgjIy+7orxF7aUC0Gg5jk6zqWfsoo54Eu93M26fTl6eRPRDLjm0Xit0JambN04k9QyIX9LiMGoSewNmw1wEj2HiSH/Ts= xiaojing@DESKTOP-9IGE82N' >> /home/xj/.ssh/authorized_keys
           
ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image7

測試

現在就可以用xj_xiaojin檔案來連接配接了

$ ssh -i xjdemo_xiaojin  [email protected]
           
ubuntu生成pem證書連接配接伺服器(已驗證)

ssh-demo-image8

或者把 xj_xiaojin重命名為 xj_xiaojin.pem

$ ssh -i xj_xiaojin.pem  [email protected]
           

更優化的做法,直接ssh就可以了,不需要密碼

ssh [email protected]
           

禁用密碼連接配接

注意:要保證 .pem 連接配接成功的狀态下,禁用密碼連接配接
$ sudo vi /etc/ssh/sshd_config
           

找到這一行 #PasswordAuthentication yes

# Change to no to disable tunnelled clear text passwords
# PasswordAuthentication yes
           

取消前邊的 # 注釋,改為

PasswordAuthentication no
           

重新開機 ssh服務

$ sudo service ssh restart
           

好了,教程這到這裡結束了

伺服器方案

新增使用者

root@xjTEST:~/.ssh# adduser king
Adding user `king' ...
Adding new group `king' (1001) ...
Adding new user `king' (1001) with group `king' ...
Creating home directory `/home/king' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for king
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [Y/n] Y
root@xjTEST:~/.ssh#
           

賦予root權限

$ chmod 700 /etc/sudoers
$ vi /etc/sudoers

# User privilege specification
root    ALL=(ALL:ALL) ALL
下邊增加
king    ALL=(ALL:ALL) ALL

$ chmod 400 /etc/sudoers
           

生成密鑰對

root@xjTEST:~/.ssh# cd /home/king/
root@xjTEST:/home/king# mkdir .ssh
root@xjTEST:/home/king# cd .ssh/

root@xjTEST:/home/king/.ssh# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): king_8.134.210.33.pem
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in king_8.134.210.33.pem
Your public key has been saved in king_8.134.210.33.pem.pub
The key fingerprint is:
SHA256:mAa0TRY+kECFCqU6nPfunpWeiRAStvIXnw3dqVz1iS8 root@xjTEST
The key's randomart image is:
+---[RSA 3072]----+
| o+++.+.         |
|.....B           |
|o+  o +     .    |
|= +  . = . o o . |
|+= o. = S + . o  |
|.oo o+ =.o   .   |
|  ....oo+   E .  |
|   .o = o    .   |
|    o* +         |
+----[SHA256]-----+
root@xjTEST:/home/king/.ssh# ls
king_8.134.210.33.pem  king_8.134.210.33.pem.pub
           

伺服器認證證書

root@xjTEST:/home/king/.ssh# cat king_8.134.210.33.pem.pub >> authorized_keys
           

用戶端登入

把私鑰傳到用戶端,放到~/.ssh目錄中

xiaojin@xiaojin-PC:~/.ssh$ ssh -i ~/.ssh/king_8.134.210.33.pem [email protected]
           

好了教程就到這裡結束了。