1. Windows ,Wsl 相互 SSH 密碼登錄
1.1 雙端開啓Open-SSh服務
-
Windows 開啓Open-SSH
相關文檔, 執行到 "#Start and configure OpenSSH Server" 就可以了
-
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)
-
創建 wsl 臨時目錄:
# wsl $ mkdir ~/.ssh/temp
-
通過 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
-
將 ~/.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
-
重啓 wsl sshd 服務
# wsl $ sudo service ssh restart
-
windows 測試連接 wsl
# windows powershell ssh [email protected] #回車即可連接上
2.2.2 Wsl 到 Windows (免密登錄到 Windows)
從Wsl (Linux 發行版,以及Windows) 到 Windows 實現免密登錄稍有不同。 Windows 上用戶分爲三類,分別是 管理用戶,標準用戶,和來賓用戶。 一般個人電腦。都是管理賬戶。更詳細可以參看這裏 Windows 10標準用戶帳戶和管理員帳戶之間的區別。
如何確定你是否爲管理用戶?
以下步驟基於你是 管理用戶, 如果你是標準用戶,或者有其他問題可以參看這篇文檔 OpenSSH 密鑰管理
-
通過 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
-
在 Windows 上執行以下命令
# windows shell icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
-
測試連接
# 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# 強制重載
文章參考: