# SSH key設定 免密碼連線伺服器 ## 1. 變更hostname 1. 連線至server 2. 利用sudo指令變更hostname ``` sudo hostname HW04 ``` 4. 使用exit指令離開server 5. 再重新連線 即可看到變更後的hostname ## 2. 下載PuTTY及PuTTYgen 連到[https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 分別下載PuTTY(putty.exe)及PuTTYgen(puttygen.exe) ![](https://i.imgur.com/EJbyLri.png) ![](https://i.imgur.com/tHXl2EG.png) ## 3. 產生SSH Key(私鑰、公鑰) 1. 開啟終端機(不須連線到伺服器) 2. 輸入指令產生金鑰 ``` ssh-keygen ``` 此時會詢問3個問題: * Enter file in which to save the key * Enter passphrase * Enter same passphrase again 都直接按下Enter後即可生成金鑰 ![](https://i.imgur.com/NNSKhiP.png) 3. 開啟檔案總管,到使用者的.ssh資料夾中確認已生成Public key(id_rsa.pub)及Private key(id_rsa) ![](https://i.imgur.com/pVKU6Ap.png) ## 4. 將SSH Key(公鑰)傳送到要連線的Server端 1. 開啟第二個終端,連線到伺服器(自己的帳號),再輸入以下語法 ``` mkdir .ssh ``` 若帳號下沒有.ssh資料夾,則會成功建立一個.ssh資料夾;反之,若已存在.ssh資料夾,則會建立失敗 ![](https://i.imgur.com/BfKWfzA.png) 2. 回到未連線到伺服器的終端,輸入以下語法以便將剛才產生的Public key傳送到伺服器中: ``` scp 本地端Public_key路徑 帳號@IP位址:/帳號路徑/.ssh/傳過去後的名稱.pub ``` 若指令輸入無誤,將需輸入伺服器密碼,並會看到檔案的傳輸狀態 ![](https://i.imgur.com/rXlmEfa.png) 3. 可至連線到伺服器的終端確認傳輸成功與否,若能在.ssh資料夾中找到方才傳輸過來的.pub檔案,即為傳輸成功 ``` cd .ssh //進入.ssh資料夾 ls //列出資料夾中所有檔案 ``` ![](https://i.imgur.com/nwbrIfB.png) ## 5. 授權SSH Key(公鑰) 1. 在連線到伺服器的終端輸入以下指令,以便對剛才傳輸過來的.pub檔案進行授權: ``` cat ~/.ssh/傳輸過來後的名稱.pub >> ~/.ssh/authorized_keys ``` 2. 此時列出.ssh資料夾中所有檔案可發現多了一個檔案名為"authorized_keys",可輸入以下指令查看哪些金鑰授權成功: ``` cat ~/.ssh/authorized_keys ``` ![](https://i.imgur.com/N6jA5Tl.png) 3. 最後,輸入以下指令,變更檔案權限: ``` chmod 700 ~/.ssh/ //指定只有擁有者可讀寫可執行該目錄 chmod 600 ~/.ssh/* //指定只有擁有者具備讀取和寫入.ssh資料夾下所有檔案的權限 ``` ![](https://i.imgur.com/zg1YQ1o.png) ## 6. 私鑰轉檔 1. 開啟PuTTYgen,Load前面所產生的私鑰(id_rsa) :::info :bulb: **注意**:需先將顯示的檔案類型改為"All Files(\*.*)"才找得到私鑰 ::: ![](https://i.imgur.com/rgx84pm.png) 2. 選擇"Save private key",並為轉檔後的私鑰取名 :::info :bulb: **注意**:記得取完名後要在後方加上附檔名.ppk ::: ![](https://i.imgur.com/zROlp1t.png) ## 7. 設定PuTTY 連線 1. 開啟PuTTY,左方選擇 Connection>>SSH>>Auth>>Credentials,點擊"Browse..." 2. 選擇方才轉檔後的私鑰(.ppk) ![](https://i.imgur.com/0oKfkRJ.png) 3. 左方選擇Session回到起始畫面,下方Saved Sessions處輸入 **hostname@IP位址** 並儲存,未來雙擊可免重新設定前2步驟,輸入Host Name即可免密碼登入Server ![](https://i.imgur.com/bFokGJD.png) ## 8. 成功免密碼登入 ![](https://i.imgur.com/zqoEkWE.png) ## 參考資料 1. [如何更改Linux作業系統的主機名稱(hostname)?](https://magiclen.org/linux-change-hostname/) 2. [SSH Key 教學,讓你免密碼登入主機伺服器!](https://raise-up.com.tw/web-design-news/ssh-key-tutorial.html/) 3. [How To Use SSH on Windows PuTTY - Generate Public/Private Key Pair & File](https://www.bluehost.com/help/article/using-ssh-on-windows-putty) ###### tags: `Linux系統管理` `SSH key` `免密連線`