使用VNC+SSH建立安全的遠程桌面訪問WINDOWS伺服器

来源:http://www.cnblogs.com/fancybit/archive/2017/01/31/6359226.html
-Advertisement-
Play Games

用了一段時間的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桌面了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • -- 開窗函數:在結果集的基礎上進一步處理(聚合操作) -- Over函數,添加一個欄位顯示最大年齡 SELECT * , MAX(StuAge) OVER ( ) MaxStuAge FROM dbo.Student; -- Over函數,添加一個欄位顯示總人數 SELECT * , COUNT(... ...
  • -- 交叉連接產生笛卡爾值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一種寫法 SELECT * FROM Student , ClassInfo -- 內連接 (Inner 可以省略) SELECT * FROM Studen... ...
  • 轉載請標明鏈接:http://www.cnblogs.com/wingsless/p/6349434.html boneCP連接的實現 boneCP自己實現了標準的java.sql.Connection介面,除了會持有Connection對象之外,還會擁有一些屬性用於標記連接的創建時間,空閑時間等。 ...
  • 一、背景 公司在用kettle做數據etl,每做完一個job或transformation發佈上線想要立即執行看數據效果的話每次都是找運維同學登陸伺服器打開kettle找到對應的文件點擊執行,整個過程效率低下,不僅占用運維時間,期間自己也在白白等待,浪費生命。 google “kettle remo ...
  • 最近工作中遇到了一個問題,需要根據保存的流程數據,構建流程圖。資料庫中保持的流程數據是樹形結構的,表結構及數據如下圖: 仔細觀察表結構,會發現其樹形結構的特點: FFIRSTNODE:標記是否為根節點 FSTABLENAME:標記來源單據名稱 FSID:標記來源單據分錄ID FTTABLENAME ...
  • SQL Server 2014記憶體優化表的使用場景 最近一個朋友找到走起君,咨詢走起君記憶體優化表如何做高可用的問題 大家知道,記憶體優化表作為In-Memory OLTP功能是從SQL Server 2014開始引入,用來對抗Oracle 12C的In-Memory OLTP選件 不過SQL Serv ...
  • 根目錄 大小:60G~100G(用來安裝程式) 新分區的類型:主分區 新分區的位置:空間起始位置 用於:EXT4日誌文件系統 掛載點:"/" 大小:4G 新分區的類型:邏輯分區 新分區的位置:空間起始位置 用於:交換空間 掛載點:不設置 大小:500MB 新分區的類型:邏輯分區 新分區的位置:空間起 ...
  • 最近想再看看PCL,所以進行了安裝,在之前的接觸的過程中,由於之前的網路存在問題,導致以下三個命令: 老是會出先問題,一般會在linux 命令視窗中提示:公鑰或者私鑰比匹配之類的錯誤,或者乾脆找不到源 這個是因為在國內去找v-launchpad-jochen-sprickerhof-de/pcl這個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...