Try   HackMD

vscode SSH 遠端 server 連線設置方式

透過rsa,不需密碼

環境配置

  • local: windows, mac
  • server: linux
  • vscode extension: Remote SSH
    • 建立remote
      ​​​​​​​​Host your-host # 使用者定義的別名,可以用別名來替代 ssh userName@ip
      ​​​​​​​​  HostName your-host-name # ip 或是 server name
      ​​​​​​​​  User your-user # user name
      
  • 生成新的金鑰
    • 使用指令ssh-keygen產生新的金鑰對。 可以選擇在產生金鑰對時為其指定不同的檔名。 請注意,-f 後的 id_rsa_linux 和 id_rsa_windows 只是範例檔名,可以依需求選擇其他檔名。
    • 在 local 端的 powershell (以系統管理員),依需求執行已下指令
    ​​​​ # 在 Windows 上
    ​​​​ ssh-keygen -t rsa -b 2048 -f C:\Users\YourUsername\.ssh\id_rsa_windows
    ​​​​ # 在 mac 上
    ​​​​ ssh-keygen -t rsa -b 2048 -f /Users/chunhungyu/.ssh/id_rsa_windows
    
    • 注意:當你在多個平台上使用 SSH 連線到不同的遠端伺服器時,可能需要為每個平台產生和使用不同的金鑰對。 這是因為每個平台(例如,Windows、Linux、Mac)可能有不同的檔案系統和金鑰檔案位置,同時在安全性的考量下,不同平台上的金鑰對最好是獨立的。
    • 執行指令後的結果如下
      • image
      • 系統會在你指定的路徑(本範例為 C:\Users\YourUsername.ssh)下產生兩個文件,分別是id_rsa_windows.pub和id_rsa_windows,前者為產生的公鑰,後者為私鑰 。
  • 新增公鑰到遠端伺服器
    • 將產生的公鑰( id_rsa_windows.pub的內容)加入到你遠端伺服器的 authorized_keys 檔案中,以允許連線。
    • 本機是Windows,可以使用下列方法之一:
      • 使用scp 命令:使用scp 命令將公鑰文件傳輸到遠端伺服器,在遠端伺服器上,將公鑰內容追加到authorized_keys 文件,但是本人不建議使用scp發送,這樣會對自己機器或者對方機器的原有配置 造成覆蓋或是遺失,有風險。
      • 手動複製:手動複製公鑰檔案 (id_rsa_windows.pub) 的內容,然後登入遠端伺服器,並將內容貼上到 authorized_keys 檔案。 如下是我產生的id_rsa_windows.pub檔案內容:
    • image
    • 在遠端伺服器上,authorized_keys 檔案通常儲存在使用者的 .ssh 目錄中。 具體路徑可能為 ~/.ssh/authorized_keys,如果遠端linux上面沒有 authorized_keys,可以自行創建,指令如下;也可以在vscode遠端總管中建立。
      ​​​​​​​​# 建立目錄
      ​​​​​​​​mkdir ~/.ssh
      ​​​​​​​​# 進入目錄
      ​​​​​​​​cd ~/.ssh
      ​​​​​​​​# 建立 authorized_keys 文件
      ​​​​​​​​touch authorized_keys
      ​​​​​​​​# 使用文字編輯器開啟 authorized_keys 文件,並將你的公鑰內容貼到其中,nano or vim
      ​​​​​​​​vim authorized_keys
      ​​​​​​​​# 儲存並關閉文字編輯器。
      
  • 配置 SSH 客户端:
    • 將添加公鑰到遠端伺服器後,最後一步就是設定你的主機。
    • 打開你的SSH 用戶端(本機)設定檔(也就是前面產生的config文件,一般在C:\Users\YourUsername.ssh\config),新增設定(IdentityFile 私密金鑰檔案路徑),以指定使用哪一個 私鑰檔案。 下圖為我添加的內容。
      • image
      • 這樣,當你使用 ssh 連接伺服器時,SSH 用戶端將自動選擇相應的私鑰文件,就可以實現免密登入了。