分類

展開全部 | 收合全部

分類

展開全部 | 收合全部

【Linux 網路遠控 #10】透過建立 ssh authorized_keys 讓 VScode 繞過輸入 ssh 密碼 or 達成 ssh 免密碼登入 (updated: 2022/9/12)

ssh# 前言

VS code 有時候透過 GUI 嘗試 ssh 登入遠端時,
會碰到密碼輸入很多次都沒辦法成功的現象。

看到網路上的分享,據說是 VScode GUI 在 ssh 連線時,
會有密碼沒辦法輸入 / 輸入了「正確密碼」卻顯示「密碼錯誤」的狀況。

ssh authorized_keys 介紹

這裡只簡單介紹概念,
在密碼學裡面,我們經常使用一組公鑰搭配私鑰的方式來進行配對驗證密碼。

這裡我們就要進行這樣的操作,比喻來說
公鑰就是可以給別人的 (類似鎖頭),
私鑰我們要自己留著 (類似鑰匙)。

當公鑰與私鑰配對時,就可以解開密碼鎖。 (這觀念不完全正確,但可以簡易理解我們大概在幹嘛)

本地端,處理 local (client) 的私鑰

主要我們要產生公鑰與私鑰。記得,公鑰我們等等要給遠端拿著。

ssh-keygen

預設應該會將檔案產生在 ~/.ssh 底下,
檔名預設為 id_rsa,而 id_rsa.pub 為公鑰

我們打開 id_rsa.pub ,應該會看到一串 ssh-rsa 開頭的東西,
我們複製整段內容。

遠端,remote (server) 放上我們的公鑰

複製剛剛上面我們所說的 ssh-rsa 開頭的文字,
貼在遠端的 ~/.ssh/authorized_keys 的最後面,
(如果沒有這個檔案的話,請自己新建一個)

可能會用到的提示指令 (將內容加至檔案後面)

echo "public_key_string" >> ~/.ssh/authorized_keys

vscode 設定

同樣的設定我們也可以直接更改 ~/.ssh/config 的設定檔,
我們也可以透過 VScode 設定的路徑,直接修改這個設定檔。

( IdentityFile 指的是 local 私鑰的位置,當我們要管理多組公鑰私鑰時,
可以修改這個來管理。)

  • 我們可以從 VScode ssh remote 那邊打開 ~/.ssh/config 的設定檔
Host 192.168.0.1
  HostName 192.168.0.1
  User ubuntu
  IdentityFile ~/.ssh/id_rsa

完成!

到這邊基本上就完成了,測試一下 VScode 連線還需不需要打密碼吧!

windows 連線至 mac, linux (處理麻煩的 windows 路徑)

step 1. (windows 上) ssh-keygen

  • 先建立我們的公私鑰
ssh-keygen
  • 複製出公鑰
cat .\.ssh\id_rsa.pub

step 2. (mac 上) 貼上公鑰(.pub) 的內容至 authorized_keys

打開你的 mac, linux,貼上剛剛公鑰(.pub) 的內容 至 「~/.ssh/authorized_keys」中

vim ~/.ssh/authorized_keys

step 3. 完成!

照上面的幾個步驟後,我就已經可以直接免密碼登入囉!

mac, linux 連線至 windows (處理麻煩的 windows 路徑)

windows 的路徑與 linux, mac 都不太一樣… 我們需要另外設定,
但有點太麻煩,日後再慢慢更新

step 1. 開啟 windows ssh 服務

之前有完整教學了,因為篇幅的關係,這邊直接提供連結:

【Windows】windows 開啟 ssh 的方式

可以檢查看看有沒有開啟 windows ssh 服務 (記得要開啟管理員權限的 powershell)

Start-Service sshd

(mac, linux 連線至 windows) step 2. windows 找到 ip (hostname 目前研究到找得到,但還沒有找到能讓 client 端能解析的方法)

  • 找 ip

找 「192.168」 開頭的那個

ipconfig
  • 如果要找 username

powershell 輸入

echo $env:USERNAME

或者是使用以下指令 (記得只需要看尾巴,帳號名有點被截斷感覺的部分)

whoami
  • 如果要找 hostname (但目前研究到此,client 端仍無法解析這個 hostname)

powershell 輸入

hostname

先嘗試 ssh 連線看看

ssh username@ip
# 目前碰到無法解析 hostname 的問題,
# 無法使用 ssh username@hostname

發現已經可以連線了! 這是一件好事!

注意,如果這個步驟還不能連線,應該要先檢查為什麼不能連線,再繼續往下做

(windows 作為 server) windows 設定 authorized_keys

請將 authorized_keys 放置於以下路徑

C:\Users\<username>\.ssh\authorized_keys

(windows 作為 server) windows 額外的安全性設定

先放可以參考的網站如下:

可以先觀察:

cat "C:\ProgramData\ssh\sshd_config"| Select-String "Authentication"

觀察 PubkeyAuthentication yes 是否有被註解

修改 sshd_config

修改以下檔案:

C:\ProgramData\ssh\sshd_config

修改:

#PubkeyAuthentication yes 取消這行的註解
#StrictModes yes 取消註解,並改為 StrictModes no

目前到這邊還沒試成功,改天有空再繼續試,會再更新
(windows 安全性比較高,但也真的比較麻煩啊…)

Reference

⭐文字(程式碼) 編輯器 相關文章整理⭐:
⭐VScode 相關文章整理⭐:
1.【VScode】VScode實用快速鍵總整理
2.【VScode】直接把 coding 的「視窗」搬回家,不要再用慢慢的遠端桌面了! VScode ssh 遠端辦公
⭐Sublime 文章連結整理⭐:
1.【Sublime】Sublime 實用快速鍵總整理
2.【Sublime】Python 縮排小技巧 (很爛但實用) 快速將 tab 改成「4格空白」的方法
3.【Sublime】Sublime 將縮排 “tab” 改成 4格空白 的方法 (圖文說明) sublime indent 4 spaces
4.【Sublime】在 sublime 啟動終端機, Sublime terminal – 圖文教學 安裝/解除安裝 terminus
⭐vim 相關文章整理⭐:
1.【Linux】linux/ubuntu/mac vim 的 新手/初學者 的基礎使用指令 與 個人常用功能總整理 (持續更新)
⭐【喜歡我的文章嗎? 歡迎幫我按讚~ 讓基金會請創作者喝一杯咖啡!
如果喜歡我的文章,請幫我在下方【按五下Like】 (Google, Facebook 免註冊),會由 「LikeCoin」 贊助作者鼓勵繼續創作,讀者們「只需幫忙按讚,完全不用出錢」哦!

likecoin-steps
Howard Weng
Howard Weng

我是 Howard Weng,很多人叫我嗡嗡。這個網站放了我的各種筆記。希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦!
另外,因為定位是「個人的隨手筆記」,有些文章內容「⚠️可能我理解有誤⚠️」或「?只寫到一半?」,如果有發現這樣的情況,歡迎在該文章的最下面留言提醒我!我會儘快修正或補上!感謝大家的建議與幫忙,讓網站能變得更好?

文章: 890

2 則留言

★留個言吧!內容有誤或想要補充也歡迎與我討論!