首頁  >  文章  >  運維  >  如何設定ssh服務使得不用輸入帳號密碼即可連接遠端主機

如何設定ssh服務使得不用輸入帳號密碼即可連接遠端主機

齐天大圣
齐天大圣原創
2020-11-20 11:40:023207瀏覽

我們知道,ssh協定可以透過輸入帳號名稱和密碼來連接遠端的伺服器。那麼,可以免去輸入帳號和密碼嗎,直接登入。答案是可以的,而且在日常工作中,這種需求也是常見的。例如,使用scp來做異地備份,想要把scp寫入到crontab中,但是在crontab肯定不能夠輸入帳號密碼的,那麼就需要做免帳號密碼登入了。

ssh是一種非對稱加密協議,有公鑰和私鑰。公鑰是用來加密資訊用的,各個主機中會在自己的家目錄的.ssh目錄下的known_hosts檔案中存放其他主機的公鑰。想要做免帳號密碼,重點就是這個公鑰。

假設一台伺服器主機SERVER,一台客戶機CLIENT,客戶機想要免登陸連線SERVER。那就只要將客戶機的公鑰追加到SERVER機的~/.ssh/authorized_keys末端即可。以下分兩種情況示範如何免密碼登入:

  • 客戶機為windows系統

  • 客戶機為linux系統

客戶機為windows系統

#首先第一步需要去產生秘鑰對,在這裡,我們使用git工具來生成秘鑰對(如何在windows系統上安裝git,這個自己去查詢,非常的簡單,一路next即可)。

ssh-keygen

在git終端機輸入上述指令後,會有一系列的提示訊息,直接輸入ENTER鍵(共需輸入三次ENTER)。之後,就可以在$HOMT/.ssh/目錄下看到公鑰以及私鑰,以pub結尾的是公鑰。

admin@LAPTOP-7P19B9SH MINGW64 ~/.ssh
$ ll
total 13
-rw-r--r-- 1 admin 197121 1679  5月  3  2019 id_rsa
-rw-r--r-- 1 admin 197121  398  5月  3  2019 id_rsa.pub

接下來就把該公鑰上傳到伺服器上,然後把該公鑰資訊追加到~/.ssh/authorized_keys中。

# cat id_rsa.pub >> .ssh/authorized_keys

下面示範如何使用xshell來免密碼登入

第一步、輸入遠端主機的IP

如何設定ssh服務使得不用輸入帳號密碼即可連接遠端主機

第二步、點選使用者身份驗證,然後選擇方法為Public Key。然後輸入用戶名,這裡我們填root。最後選擇金鑰,注意這裡需要選擇是的私鑰,而不是公鑰。

如何設定ssh服務使得不用輸入帳號密碼即可連接遠端主機

這兩個步驟設定好了後,就完成了免密碼登入了。

客戶機為linux主機

第一步也是產生秘鑰對

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:GCyx2cSYE6yR7xCuUVOF0Omvp5fEoxv0Y2wOQvMRB98 root@lijia
The key's randomart image is:
+---[RSA 2048]----+
|  .*=Oo          |
|  * OX..         |
| o B=.* E        |
|. + o+ o         |
| ooooo. S        |
|.. +.+=          |
|  . ++*o         |
|   .o*+.         |
|    o=.          |
+----[SHA256]-----+

第二步,將剛生產的公鑰傳送給另一台機器

# ssh-copy-id root@121.***.***.64
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@121.196.12.64's password: 
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@121.***.***.64'"
and check to make sure that only the key(s) you wanted were added.

第三步,登入遠端主機

# ssh root@121.196.12.64
Welcome to Alibaba Cloud Elastic Compute Service !
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Fri Nov 20 10:28:37 2020 from 111.38.123.86
# 免密码登录成功

更多相關技術文章,請造訪linux系統教學專欄!

以上是如何設定ssh服務使得不用輸入帳號密碼即可連接遠端主機的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn