Windows 配置 ssh 免密登入 Linux 伺服器
阿新 • • 發佈:2021-01-30
每次登入伺服器都要輸入密碼很麻煩,所以進行免密登入配置之後就可以跳過輸入密碼的步驟,直接登入伺服器。
目錄
原理
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: 沒有檔案或者目錄
侵刪。