install-openssh-with-cygwin-on-windows-10
本來windows10上已經有內建的openssh
,我可能愛折騰不願意使用內建的,所以使用cygwin
重新安裝了一個ssh服務.
安裝步驟總結
- 安裝cygwin
- 使用管理員許可權執行cygwin安裝
openssh
和openssl
- ssh-host-config命令開始配置ssh
- windows10內建的
sshd
和ssh-host-config
預設的服務名衝突解決 - 一系列ssh-host-config配置,包括daemon名稱
ntsec
和建立預設的cyg_server
來執行sshd
服務 - ssh-user-config生成使用者的金鑰(非必須,可以使用密碼登陸,使用者就是windows的正常使用者)
- 啟動服務
net start cygsshd
- 使用putty登陸localhost測試
- 解除安裝
ssh
- 重新安裝
ssh
注意:cygwin使用的是windows的使用者和許可權,所以預設
/etc/
下是沒用passwd
和group
等檔案的,不要太驚訝。開始我也沒用搞明白,而且
ssh-host-config
中建立一個cyg_server
使用者是真實的windows賬戶,但是需要組策略才能夠看到,這個使用者用來啟動sshd
服務的,而且不能用來登陸windows,因為是一個令牌使用者,在組策略>計算機配置>windows配置>安全設定>本地策略>使用者許可權分配> 建立一個令牌物件中看到。
cygwin安裝openssh和openssl
假設你已經安裝了cygwin
,使用cygwin安裝openssh和openssl詳情看參考:
how-to-get-ssh-command-line-access-to-windows-7-using-cygwin/
修復sshd service is already installed.
警告:sshd service is already installed.
出現sshd service is already installed.的問題是因為windows 10內建了一個openssh,造成了衝突,現在只需要修改cygwin安裝的openssh中的預設的sshd服務名稱。
修改預設的sshd服務名
路徑: C:/cygwin64/bin/sshd-host-config
(32位的有所區別,找不到用everything搜尋一下啊)
修改: service_name=sshd 為 service_name=cygsshd (cygsshd自定義的)
修改完之後重新執行ssh-host-config
,上面的問題解決.
下面是執行中的截圖.
建議使用預設的cyg_server
,沒用必要重新自定義,我當時也是好奇,搞得走了很多彎路。
啟動服務
也可以重啟一下系統,服務會自動啟動
net start cygsshd # cygsshd是自定義的service_name
# 或者使用cygwin執行
cygrunsrv -S cygsshd
複製程式碼
ssh-user-config
選擇生成使用者的
RSA
口令就行了,RSA
比較常用,其它的不是很常用。
解除安裝ssh服務
# 刪除sshd服務, sshd時預設的服務名,如果你定義了,輸入你的服務名
cygrunsrv --stop sshd
cygrunsrv --remove sshd
# Delete any sshd or related users (such as cyg_server) from /etc/passwd
# (use your favorite editor)
# Delete any sshd or related users (such as cyg_server) from the system
# 這裡刪除的是windows上的使用者
net user sshd /delete
# 如果ssh-host-config配置過程中沒用使用cyg_server,請替換為你自定義的名字
net user cyg_server /delete
複製程式碼
重灌ssh重新設定許可權
如果設定許可權不行,刪除sshd.log和empty資料夾.
chown <USERNAME> /var/log/sshd.log
chown -R <USERNAME> /var/empty
chown <USERNAME> /etc/ssh*
chmod 755 /var/empty
chmod 644 /var/log/sshd.log
複製程式碼
參考資料
Installing Cygwin and Starting the SSH Daemon
how-to-get-ssh-command-line-access-to-windows-7-using-cygwin/