
大概四年前,眾多互聯(lián)網(wǎng)公司還舍不得給程序媛配置mac,清一色的都是用臺(tái)式機(jī)的Windows,我當(dāng)時(shí)也是用的很happy,后來聽一位從硅谷歸來的朋友講,在硅谷雇主一般會(huì)給大家配發(fā)mac,并且 大家都習(xí)慣用mac 開發(fā),使用Windows編程 會(huì)讓雇主嚴(yán)重懷疑你 開發(fā)的能力和對事物態(tài)度,另外 硅谷的開發(fā)同事也會(huì)對你帶有偏見【用Windows的都是垃圾 或者菜鳥】,當(dāng)時(shí)很不解,也很吃驚,隨著今年Microsoft 表示 Windows系統(tǒng)部門將被裁撤,win10未來將不再進(jìn)行更新維護(hù),Microsoft也不打算再開發(fā)新的Windows系統(tǒng),世人皆驚。背后可能是 Windows放棄最后的掙扎。
假如你已經(jīng)開始使用ubuntu centos redhat ,你會(huì)逐漸喜歡上 Terminal vi emacs ,如果你喜歡不上,可能注定你很low【 哎】,mac 作為 unix系統(tǒng)的商業(yè)版本,天生和 linux 內(nèi)核的服務(wù)器系統(tǒng)有很大的相似性,相比 ,Windows 簡直就是個(gè)異類。
你在Terminal上用習(xí)慣的 ssh scp ftp 這些命令 Windows都原裝沒有,你要安裝和開啟也非常麻煩,作為普通用戶來說你可能只關(guān)心能不能掛個(gè)QQ 或者微信 ,打開 office ,打開瀏覽器,但是作為 開發(fā)人員,這些Windows都不能人性化的滿足我,摔。。。
先說說 mac 如何開啟sshd服務(wù) 【ssh server]
mac 無法ssh localhost,錯(cuò)誤提示:bash: /usr/local/bin/ssh_session: Permission denied
在網(wǎng)上找了很久也沒有找到解決方案,最后根據(jù)提示自己摸索如下:
1.編輯/etc/sshd_config文件,注釋掉
#ForceCommand /usr/local/bin/ssh_session
2.啟動(dòng)sshd服務(wù):
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
3.停止sshd服務(wù):
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
4查看是否啟動(dòng):
sudo launchctl list | grep ssh
如果看到下面的輸出表示成功啟動(dòng)了:
--------------
- 0 com.openssh.sshd
下面來講講怎么 開啟 Windows 的ssh 服務(wù)
首先來說
ssh 服務(wù) 分兩部分,一個(gè)是client 去連接其他遠(yuǎn)程服務(wù)機(jī)器的
一個(gè)是server 是作為一個(gè)ssh 的主機(jī)讓別人來連接自己的。
說實(shí)話 作為 client這部分比較容易實(shí)現(xiàn),但是作為 server讓別人來連接 還真是不太容易,我們怎么來檢驗(yàn) 是否這兩個(gè)服務(wù)開啟成功了呢
作為 client 就是去連接別人,比如
ssh root@cdhnice ,輸入密碼加入連接成功,說明 client正常
作為server 那就是 連接自己,比如
ssh user@127.0.0.1, ,輸入密碼加入連接成功, 說明 server正常
與ssh 相關(guān)的文件目錄 有
C:\windows\System32\drivers\etc\hosts
C:\Program Files\OpenSSH\bin
首先我們要
我們這次 使用 openssh來開啟 服務(wù)
https://github.com/PowerShell/Win32-OpenSSH/releases/
下載 OpenSSH-Win32.zip
文件
windows 創(chuàng)建 新用戶命令建議在 管理員下的power shell 中進(jìn)行
首先右鍵點(diǎn)擊開始菜單選擇命令提示符(管理員)(windows+x------a)然后輸入以下命令實(shí)現(xiàn)功能:
添加用戶輸入:net user 用戶名 密碼(可選) /add
修改用戶密碼: net user 用戶名 新密碼 該命令需權(quán)限高于要修改的用戶名
刪除用戶:net user 用戶名 /del
然后解壓 安裝 ,安裝成功后 會(huì)有一個(gè)目錄
C:\Program Files\OpenSSH
在這個(gè)目錄的 bin 下有可執(zhí)行的 文件
然后建議把這個(gè)目錄加入到系統(tǒng)的環(huán)境變量中

https://jingyan.baidu.com/article/3c343ff7f9b6940d3779632f.html
https://jingyan.baidu.com/article/3c343ff7f9b6940d3779632f.html
之后可以在 git bash 或者 power shell 中嘗試使用 ssh 和scp 命令,發(fā)現(xiàn)命令可以識(shí)別有效,嘗試作為client去連接其他機(jī)器,如果沒有問題,一般會(huì)連接成功
然后我們來嘗試 ssh server的這一部分
我們 嘗試 ssh user@127.0.0.1
回應(yīng)我們的是
received disconnect from 127.0.0.1 port 22:11
反正是無法連接
然后我們嘗試ping
先ping 127.0.0.1 發(fā)現(xiàn)ping不通,修改hosts文件
C:\windows\System32\drivers\etc\hosts
在Windows 左下角的home 右鍵 打開 管理員身份的 power shell [A] 然后去修改 hosts 文件,或者進(jìn)入hosts文件目錄,直接右鍵這個(gè)文件屬性 修改權(quán)限,反正是修改為可以編輯保存的,添加一行
127.0.0.1 localhost
然后再ping ,發(fā)現(xiàn) 127.0.0.1 可以ping通,localhost 也可以ping通,但是 有區(qū)別
ping 127.0.0.1 返回的是127.0.0.1,ping localhost 按道理返回的也應(yīng)該是 127.0.0.1才對,結(jié)果卻是 ::1,啥意思,其實(shí)就是 127.0.0.1 localhost 并沒有真實(shí)的映射成功,什么導(dǎo)致的呢,其實(shí)竟然是 ipv6 優(yōu)先級(jí)高于ipv4 ,沒有辦法,我們必須讓 piv4的高才可以
修改優(yōu)先級(jí)
參考
https://blog.csdn.net/ambertian/article/details/70238020
輸入命令 netsh interface ipv6 show prefixpolicies,查詢ipv6優(yōu)先級(jí)
netsh int ipv6 set prefix ::/96 50 0
netsh int ipv6 set prefix ::ffff:0:0/96 40 1
netsh int ipv6 set prefix 2002::/16 35 2
netsh int ipv6 set prefix 2001::/32 30 3
netsh int ipv6 set prefix ::1/128 10 4
netsh int ipv6 set prefix ::/0 5 5
netsh int ipv6 set prefix fc00::/7 3 13
netsh int ipv6 set prefix fec0::/10 1 11
netsh int ipv6 set prefix 3ffe::/16 1 12
x修改完后 再次 ping localhost 返回127.0.0.1返回正常,
但是 再嘗試 ssh user@127.0.0.1,還是連接被拒絕,說明 ssh 服務(wù)還是沒有開啟
Windows 左下角home 右鍵 打開 任務(wù)管理器,查看服務(wù),發(fā)現(xiàn) openssh sshd服務(wù)是停止的狀態(tài),還有一個(gè)openssh server sshd 也是停止的狀態(tài),道理很簡單,sshd 這個(gè)服務(wù)還是沒正常開啟,

四種方式
1.直接在任務(wù)管理器的服務(wù)中去手動(dòng)啟動(dòng)這些服務(wù),按道理這個(gè)只能啟動(dòng)一個(gè),好像是互斥的,只要啟動(dòng)一個(gè)就可以了,
2.重啟電腦,電腦重啟后 可能會(huì)默認(rèn)開啟sshd 服務(wù),這個(gè)嘗試后,是可以的,
所以 非常建議你重啟電腦再嘗試!?。?!
3.按照教程套路來
https://o7planning.org/en/11409/installing-openssh-server-on-windows
這個(gè)寫的比較全面一些
4.安裝 cygwin
最后的檢驗(yàn)就是再任務(wù)管理器查看openssh **sshd這個(gè)服務(wù)是否有一個(gè)正常的運(yùn)行,然后檢驗(yàn) ssh user@127.0.0.1可以正常的登錄



參考
localhost不能訪問127.0.0.1可以訪問的原因及解決方法
http://www.webkaka.com/tutorial/server/2013/121611/
總之倒騰一天 總算有個(gè)結(jié)果,其實(shí)mac 的ssh server服務(wù)默認(rèn)也不開啟,需要手動(dòng)打開,倒是 mac 自帶這個(gè)東西,也不需要安裝額外的
從Windows安裝一個(gè)ssh 就這么費(fèi)勁 ,印證了一個(gè)普通的不公平的道理:【你努力的終點(diǎn)可能只是別人的起跑線而已。?!抗裁惆?,降維打擊時(shí)常存在,莫不可做被打擊的losser