#Window,Wsl 項目SSH密碼以及免密登錄 #From Wsl to Windows and From Windows to Wsl

1. Windows ,Wsl 相互 SSH 密碼登錄

1.1 雙端開啓Open-SSh服務

  1. Windows 開啓Open-SSH

    相關文檔, 執行到 "#Start and configure OpenSSH Server" 就可以了

  2. Wsl 開啓Open-SSH

    Wsl 自帶Open-SSH, 啓動方式如下:

    $ sudo service ssh start
    

    如果遇到以下報錯:

    sshd: no hostkeys available -- exiting.
    

    執行:

    $ ssh-keygen -A
    $ sudo service ssh start
    # $ sudo service ssh restart 重啓
    

1.2 測試連接

密碼連接非常簡單,只要雙端開啓了 Open-SSH 服務, 就可以連接了:

測試 Windows to Wsl

# windows powshell   
$ ssh [email protected]
# jayce 是我wsl用戶
# 172.21.215.48 是我wsl 局域網地址

# 然後輸入密碼就可以了(wsl 用戶密碼,這裏就是jayce 的用戶密碼)

測試 Wsl to Windows

# wsl bash
ssh [email protected]
# jayce 也是我windows用戶
# 192.168.0.101 是我 windows 局域網地址

📓 Tips

查看ip地址:

  • windows

    ipconfig
    
  • wsl

    hostname -I
    

2. Windows ,Wsl 相互免密登錄

準備工作 —— 配置文件

在開始前有一些必要的配置需要設定:

以 Wsl 爲例:

# wsl bash

$ sudo vim /etc/ssh/sshd_config

有以下字段需要修改:

PermitRootLogin prohibit-password 
#[按需修改] 是否允許以root角色通過ssh登錄?, 如果需要設爲:
PermitRootLogin yes

#------------------------------------------------------------
PasswordAuthentiation yes #是否開啓密碼認證? 在設置免密登錄之後,建議關閉(設爲 no)

#------------------------------------------------------------
PubkeyAuthentication yes #是否開啓公鑰認證? wsl 是默認開啓的就不用管

#------------------------------------------------------------
Port 22 #默認端口也是22,建議不要修改,除非22 端口另有別用,且以下教程端口都是默認22端口

⚠️ 每次修改完配置文件要重啓服務

# windows
Restart-Service sshd -Force
# or 
Restart-Service -Name sshd -Force

# wsl
$ sudo service ssh restart

2.1 雙端生成密鑰對

# wsl bash
$ sudo ssh-keygen

# windows powershell 管理員
ssh-keygen


# 然後一路回車就好

生成的密鑰對位於:"~/.ssh/ "目錄下,命令行可以通過下面命令訪問:

$ cd ~/.ssh/ 

📓

Tips:

配置文件路徑:

  • windows:"C:\ProgramData\ssh\sshd_config"

    文件管理器地址欄 "%programdata/ssh%" 回車即可訪問,注意該目錄須在首次啓動sshd服務後纔會產生,且屬於隱藏目錄。 powershell 可能看不到,但是直接可以 cd ProgramData 進去。

  • Wsl : "/etc/ssh/sshd_config"

2.2 向對端添加 本端 的公鑰

2.2.1 Windows 到 Wsl (免密登錄到 Wsl/Linux)

  1. 創建 wsl 臨時目錄:

    # wsl
    $ mkdir ~/.ssh/temp
    
  2. 通過 scp 將 windows 公鑰發送到 第一步在 wsl 創建的目錄,即 wsl 下 "~/.ssh/temp"

    # powershell
    $ cd ~/.ssh/
    $ scp ./id_rsa.pub [email protected]:~/.ssh/temp/
    # jayce 爲我自己wsl 用戶名,172.21.215.48 是我自己的wsl 局域網ip
    

    image-20220512222153199

  3. 將 ~/.ssh/temp/id_rsa.pub 追加到 ~/.ssh/authorized_keys 文件

    # wsl
    $ cd ~/.ssh/
    $ touch authorized_keys #如果目錄下有這個文件就不用創建
    $ cat ~/.ssh/temp/id_rsa.pub >> ~/.ssh/authorized_keys
    

    第1,2,3 步驟, 如果你只需要一臺 windows ssh 免密登錄到wsl 得話,上述命令可以直接簡化爲 :

    # windows shell
    scp C:\Users\jayce\.ssh\id_rsa.pub [email protected]:~/.ssh/authorized_keys
    

    這行命令直接將 windows 客戶端公鑰發送至作爲服務端的 wsl "~/.ssh/" 路徑下,並重命名爲 authorized_keys

  4. 重啓 wsl sshd 服務

    # wsl
    $ sudo service ssh restart
    
  5. windows 測試連接 wsl

    # windows powershell
    ssh [email protected] #回車即可連接上
    

2.2.2 Wsl 到 Windows (免密登錄到 Windows)

從Wsl (Linux 發行版,以及Windows) 到 Windows 實現免密登錄稍有不同。 Windows 上用戶分爲三類,分別是 管理用戶,標準用戶,和來賓用戶。 一般個人電腦。都是管理賬戶。更詳細可以參看這裏 Windows 10標準用戶帳戶和管理員帳戶之間的區別

如何確定你是否爲管理用戶?

image

以下步驟基於你是 管理用戶, 如果你是標準用戶,或者有其他問題可以參看這篇文檔 OpenSSH 密鑰管理

  1. 通過 scp 將 wsl 公鑰發送到 windows C:/ProgramData/ssh/

    # wsl bash
    $ scp ./id_rsa.pub [email protected]:C:/ProgramData/ssh/administrators_authorized_keys
    # 注意路徑
    # jayce 爲我自己的windows 用戶名
    # 192.168.0.101 爲我自己的windows 局域網ip 地址
    

    以上命令將會把 id_rsa.pub 公鑰發送到 windows下,C:/ProgramData/ssh/ 路徑下,並重命名爲 administrators_authorized_keys

  2. 在 Windows 上執行以下命令

    # windows shell
    
    icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
    

    image

  3. 測試連接

    # wsl bash
    ssh [email protected]
    

3. 簡化登錄(可選)

每次去輸入IP 以登錄有些麻煩, 我們可以爲每臺機器配置一個 HOST ,讓DNS 去解析,從而簡化我們的登錄。

在Linux, 或者Windows 上都是一樣的:

如下對 Wsl 進行配置

# wsl bash
vim ~/.ssh/config
# 編輯內容如下
 Host  win_home
 HostName 192.168.0.101
 User  jayce
 Port  22
# 測試登錄
ssh jayce@win_home
# 連接成功!

4. 關閉密碼驗證提高安全性(可選)

修改配置文件

# wsl path :  /etc/ssh/sshd_config
# windows path:  C:/ProgramData/ssh/sshd_config
PasswordAuthentiation no #關閉密碼認證

PubkeyAuthentication yes #開啓公鑰認證

5. 可能需要用的命令參考

# windows
Start-Service sshd #啓動服務
Stop-Service sshd #停止服務
Restart-Service sshd #重啓服務
# wsl 
$ sudo service ssh status #查看運行狀態
$ sudo service ssh restart #重啓
$ sudo service ssh start #啓動
$ sudo service ssh stop #停止
$ sudo service ssh force-reload# 強制重載

文章參考:

  1. OpenSSH 密鑰管理
  2. Windows 10標準用戶帳戶和管理員帳戶之間的區別
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章