用了一段時間的MONO,現在MONO也支持了ENTITY FRAMEWORK 6。但是實際上在LINUX環境里用MYSQL還是會有很多坑。並且之前在網路游戲服務端SCUT上擴展一些功能時候也遇到了一些因為MONO和.NET行為方式不一致的坑耗掉了不少時間。使用mono雖然可以節約性能開銷,但是犧牲掉 ...
用了一段時間的MONO,現在MONO也支持了ENTITY FRAMEWORK 6。但是實際上在LINUX環境里用MYSQL還是會有很多坑。並且之前在網路游戲服務端SCUT上擴展一些功能時候也遇到了一些因為MONO和.NET行為方式不一致的坑耗掉了不少時間。使用mono雖然可以節約性能開銷,但是犧牲掉了windows套件本身的便利。微軟開發工具的優勢本來就在開發時候的方便,因此想開發的爽的話,還是老實用WINDOWS SERVER和SQL SERVER好了。而且windows server似乎也有無桌面的運行模式,具體怎麼用試驗過了再來發文吧。
windows的遠程桌面只有用戶名密碼的方式登錄,安全性並不高,不過LINUX上方便的工具很多都有WINDOWS的移植版本了。
這次使用了SecureCRT和RealVNC服務端和Cygwin在windows server伺服器上搭建了使用RSA秘鑰文件加密登錄和SSH加密通道的遠程桌面。
首先是服務端的配置:
首先在cygwin網站上下載最新版的cygwin,根據機器的CPU和操作系統類型:
下一步到如下界面設置CYGWIN安裝到的目錄,這裡也是在cygwin控制台里根路徑對應的位置:
這裡是下載的包的緩存,增加軟體包的時候需要重新運行安裝程式:
選擇安裝源,最上面的源應該是最新的,國內也有一些鏡像但是有些軟體包似乎版本不是最新還有缺失。推薦使用網易的源,在我這裡速度很快:
163的鏡像:http://mirrors.163.com/cygwin/
在下麵粘貼後ADD即可
這裡搜索openssh,git, bash-completion以及bash-compelion-devel
搜索後點擊前面的skip或者default改成要安裝的版本號
選好所需軟體包之後一直下一步等待安裝。
cygwin安裝成功後, 在管理員特權下執行bash終端. 我們先對git server端進行設置. 執行ssh-host-config, 接下來腳本會引導用戶進行設定. 1. *** Query: Should StrictModes be used? (yes/no)這裡選擇yes 2. *** Query: Should privilege separation be used? (yes/no) 這裡選擇yes, Cygwin會為我們建立一個特殊的windows賬戶用來執行sshd服務. 3. *** Query: Do you want to install sshd as a service?
*** Query: (Say "no" if it is already installed as a service) (yes/no) 選擇yes, 會註冊一個sshd的服務, 以執行server. 4. *** Query: Enter the value of CYGWIN for the daemon: []
這裡寫ntsec 5. *** Info: This script plans to use 'cyg_server'.
*** Info: 'cyg_server' will only be used by registered services.
*** Query: Do you want to use a different name? (yes/no)
Cygwin要建立一個cyg_server賬戶以運行sshd服務, 這裡可以選擇為該賬戶另取名字或者使用default. 我們選擇no. 6. *** Query: Create new privileged user account 'DMC-PC\cyg_server' (Cygwin name: 'cyg_server')? (yes/no)
yes, 確定建立賬戶. 之後輸入密碼, 完成config. 設定完畢後, 在/etc下麵多出來一個sshd_config文件, 打開該文件, 將如下item的註釋取消, RSAAuthentication yes PubkeyAuthentication yes 新版的openssh原配置文件可能並沒有RSAAuthentication這行,我是自己加上了它,還沒測試是否對使用有影響。 openSSH配置完畢之後,在cygwin終端輸入: net stop sshd net start sshd 即可重啟sshd服務。如果出現了什麼錯誤,可以到服務端windows事件日誌里查看錯誤詳細信息。 秘鑰可以在服務端生成,不過我更習慣用SecureCRT生成: SecureCRT的安裝破解這裡就先不贅述了,連接的時候使用伺服器ip和windows的用戶名: 選中publickey然後單擊properties,進入公鑰設置界面,這裡可以生成公鑰:
點擊Create Identity File創建公鑰,key type選擇RSA Passphrase可以不填 key length 1024或者2048都可以。
選擇OpenSSH類型的秘鑰,保存在自己電腦安全的位置(不要共用出去的地方):
登陸時候選擇公鑰並且登陸過程會自動讀取公鑰同目錄下無擴展名的私鑰,因此不要改名或者移動私鑰
這樣設置完成後秘鑰對生成完畢,伺服器上只需要保存公鑰,即有pub擴展名的文件。
直接在這裡upload到伺服器總是失敗,我後來是使用secureFX上傳公鑰到伺服器上,位置是~/.ssh/authorized_keys 每個用戶自己的文件夾下都有各自的公鑰文件,多個公鑰使用>>操作符追加到authorized_keys文件即可。
現在去掉SecureCRT的客戶端密碼登陸方式,嘗試秘鑰文件登陸成功後在伺服器上把/etc/sshd_config這一行註釋解除並設置為PasswordAuthentication no關閉伺服器密碼認證 隨後打開SecureCRT連接屬性,如下把5900埠添加到埠映射
在服務端安裝RealVNC Server
在服務里把VNC Server改成手動啟動 然後創建一個批處理用於啟動VNC服務:net stop winvnc4
sc start winvnc4 -localhost :1
pause
這裡主要是為了傳遞localhost :1參數,讓VNC在SSH隧道的本地埠等待連接
然後把這個批處理加到開始,或者其他開機自啟動的位置
把伺服器當前管理員賬戶設置為進入系統後直接登錄,這樣就可以保證開機之後啟動VNC服務。試了在註冊表和WIN.INI里在登錄前啟動批處理的方法,然並卵了。
參考這裡設置自動登陸:http://jingyan.baidu.com/article/7e440953eabd742fc0e2efae.html
客戶端先開啟SecureCRT用之前設置的連接登陸 保持這個連接打開直到退出遠程桌面
開啟VNC Viewer,連接localhost :1
然後一切正常的話你就可以看到VNC遠程桌面了 重啟幾次測試一下不靠windows遠程桌面是否能登陸。如果可以的話就可以用VNC關閉windows遠程桌面,到此你就可以保證只有擁有2個秘鑰的電腦才能遠程登陸windows桌面了。