Yunfi

Yunfi

tg_channel
github
email

Windows Terminal 終端實現ssh連接伺服器

前言#

在 Windows 平台上,想要通過 ssh 連接伺服器的軟體選擇實在是太多了,功能強大的有 XShell,PuTTY,漂亮的也有 Tabby Terminal 之類。但是,當我把 Windows Terminal 當作主力終端使用後,不希望再打開其他的應用來連接 ssh 了,所以就有了這篇筆記。

基本操作#

現在網上能搜到的教程都是要通過編輯 settings.json 實現的,但是隨著 Windows Terminal 的更新,現在已經可以可視化設置了。本文就將直接使用 gui 進行設置。

  1. 打開 Windows Terminal, 輸入 Ctrl+,,進入設置頁面

  2. 左側,點擊 “添加新配置文件”

    配置文件

  3. 直接按 “複製”,複製了哪一個不要緊,反正都得改的

  4. 名稱自己改

  5. 如果你的伺服器是 Linux 的話(應該基本都是吧),啟動目錄可以改成 ~,或者其他你想要的目錄

  6. 可以將圖標改成

    ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png

    是一個 Linux 小企鵝的圖標

  7. 最關鍵的是 “命令行” 設置:設置為

    ssh -p [端口] [用戶名]@[伺服器ip]
    #端口是22的話 -p [端口] 可以省略
    #兩個例子:
    ssh -p 2342 [email protected]
    ssh [email protected] #如果ssh端口為22
    
  8. 點擊 “保存”,然後就可以使用了

    示例

  • 然而,這樣每次連接都要輸入密碼,Windows Terminal 也沒有保存密碼的功能,如何簡化呢?

使用 RSA 密鑰來免密登錄#

  1. 使你的伺服器支持密鑰登陸,如果已經設置過的可以跳到下一步

    1. 可以去 這裡 看一看菜鳥教程的教學,我把主要過程摘錄如下:

    2. 登陸你打算使用密鑰登錄的帳戶,執行以下指令:

      cd ~ & ssh-keygen
      
    3. 然後一路回車,不要設置密鑰鎖碼!否則登陸的時候還得再輸這個碼,直接回車就行

      cd .ssh
      cat id_rsa.pub >> authorized_keys
      chmod 600 authorized_keys
      chmod 700 ~/.ssh
      
    4. 用 FTP 把 ~/.ssh/id_rsa(就是剛生成的私鑰)下下來,我的建議是重命名(起個有意義的名字)後放進 %USERPROFILE%/.ssh/ 目錄下,因為自機生成的密鑰也會放在這個文件夾

    5. 編輯 /etc/ssh/sshd_config, 增加(修改 / 去除註釋化 / 檢查)的設置如下

      RSAAuthentication yes
      PubkeyAuthentication yes
      PermitRootLogin yes
      
      # 如果希望的話,可以用下面的設置禁止使用密碼登陸
      # 記得先測試了可以用密鑰再改
      PasswordAuthentication no
      
    6. 測試可以使用密鑰連接後,重啟 SSH 服務

      service sshd restart
      
    • 權限不夠就 sudo, 不用我多提了吧
  2. 將 Windows Terminal 的配置中 “命令行” 的值更改一下

    ssh -i [私鑰路徑] -p [端口] [用戶名]@[伺服器ip]
    #例如:
    ssh -i "C:/Users/usr/.ssh/id_rsa_server" -p 2342 [email protected]
    
  3. 大工告成!

  • 如果你是跟著別人的教程或者官方文檔走的,在 settings.json 中寫路徑的時候記得轉義引號,使用 / 而非 \, 或者你也可以轉義。如:

    "commandline": "ssh -i \"C:\\Users\\usr\\.ssh\\id_rsa_server\" -p 1145 [email protected]",
    

結語#

貼上微軟官方文檔的鏈接 Windows 終端 SSH | Microsoft Learn

現在的 Windows Terminal 基本所有操作都可以可視化完成了,我覺得沒有特殊需求,沒必要再去改 settings.json 了

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。