1. 程式人生 > 其它 >Windows 配置 ssh 免密登入 Linux 伺服器

Windows 配置 ssh 免密登入 Linux 伺服器

技術標籤:經驗總結sshlinuxwindows伺服器

每次登入伺服器都要輸入密碼很麻煩,所以進行免密登入配置之後就可以跳過輸入密碼的步驟,直接登入伺服器。

目錄

原理

ssh提供了安全的身份認證的策略,在免密登入之前,首先需要一對公鑰私鑰

客戶端拿著私鑰服務端拿著公鑰,屬於非對稱加密

私鑰客戶端自己拿著不在網路上傳輸,公鑰可以網路傳輸存在伺服器上,登入的時候使用者拿私鑰進行加密,內容傳送給伺服器,伺服器對公鑰進行解密,成功解密就告訴客戶端建立連結。

實現步驟

一、生成公鑰和私鑰

  • Windows 開啟 cmd
  • 輸入:ssh-keygen
  • 連續回車或者根據提示確定生成的私鑰公鑰存放的路徑。預設(就是一路回車)會在使用者/.ssh目錄下生成公鑰和私鑰。

id_rsa:私鑰
id_rsa.pub:公鑰

二、在客戶端編輯配置檔案

使用者/.ssh目錄,開啟config檔案,如果沒有的話自己新建一個

# 這裡可以寫IP也可以寫域名
Host XXX.XXX.XXX.XXX

# 可以是域名也可以是IP
HostName  XXX.XXX.XXX.XXX

# 登入時的使用者名稱
User root
             
PreferredAuthentications publickey

# 本地檔案,注意這個地方是放私鑰的路徑
IdentityFile C:\Users\aaa\.ssh\id_rsa

重要提示!!!
IdentityFile C:\Users\aaa\.ssh\id_rsa
使用者名稱的路徑上一定不能有中文,如果有就無法實現免密登入。如果你的使用者名稱是中文,要麼需要修改成英文,要麼就將祕鑰放置到別的檔案路徑中。

這樣新增好配置檔案後,才相當於告訴了ssh登入的時候要去這個地方拿私鑰去登入這個伺服器。

三、將公鑰拷貝到伺服器

  • 在伺服器輸入 ssh-keygen回車(生成伺服器的公私鑰)
  • 完成後會在使用者目錄下生成 .ssh目錄(輸入 ls -a檢視)
  • 進入ssh目錄 cd .ssh
  • 將客戶端的公鑰(也就是剛剛Windows上自己生成的id_rsa.pub)新增到 authorized_keys
    檔案:
    • 可以先上傳到伺服器,再
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      其中~/.ssh/id_rsa.pub是剛剛上傳到伺服器的客戶端公鑰的路徑
    • 也可以vim authorized_keys直接將Windows上自己生成的id_rsa.pub的內容拷貝過去

注意:如果沒有 authorized_keys檔案的話,參考這裡

到這應該可以進行免密登入了,如果還不行的話,嘗試以下兩步。

四、重啟ssh服務

執行下面命令重啟ssh服務。

systemctl restart sshd

五、關閉再開啟cmd進行登入



Ref:
[1] Windows系統下實現伺服器SSH免密登入)
[2] Windows 配置 ssh 免密登入
[3] 命令列 bash:/home/user/. ssh/authorized_keys: 沒有檔案或者目錄

侵刪。