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

使用VNC+SSH建立安全的远程桌面访问WINDOWS服务器的更多相关文章

  1. Linux 远程桌面 访问 WIndows

    1. Debain 系列 linux sudo aptitude install rdesktop 2. Connect rdesktop <hostname> -r sound:off ...

  2. Linux和Windows系统的远程桌面访问知识(转载)

    为新手讲解Linux和Windows系统的远程桌面访问知识   很多新手都是使用Linux和Windows双系统的,它们之间的远程桌面访问是如何连接的,我们就为新手讲解Linux和Windows系统的 ...

  3. Windows通过远程桌面访问Ubuntu

    关于Windows通过远程桌面访问Ubuntu 问题及目标 Window环境通过远程桌面访问Ubuntu Ubuntu机器端   1.  安装所需软件包   sudoapt-get install x ...

  4. 如何在客户端配置ODBC来访问远程DB2 for Windows服务器

    如何在客户端配置ODBC来访问远程DB2 for Windows服务器                                  马根峰                    (广东联合电子服 ...

  5. Ubuntu下使用SSH 命令用于登录远程桌面

    https://blog.csdn.net/yucicheung/article/details/79427578 问题描述 做DL的经常需要在一台电脑(本地主机)上写代码,另一台电脑(服务器,计算力 ...

  6. CentOS6.6中安装VNC server(CentOS配置远程桌面)

    1.安装服务 yum install tigervnc-server 1 2 名字有点怪哦,CentOS5前叫vnc-server 2.运行并设置密码 vncserver + 回车 1 2 输入密码, ...

  7. windows / Linux 远程桌面访问全面总结 / 共享文件

    一般来说,ssh 是指无图形界面形式,是命令行的方式.  速度快. vnc 是的是图形界面形式.                            速度慢. ssh 方式登陆: 1.windows ...

  8. 使用windows远程桌面连接Windows Azure中的Ubuntu虚拟机

    1.创建ubuntu虚拟机,这里同样不再赘述,创建过程和创建Windows虚拟机基本一样,只是登录可以选择密钥注入或者用户名密码(为了方便我选择了用户名密码认证),创建完成后,查看虚拟机详情中的端口信 ...

  9. Ubuntu 14.04 Remmina远程桌面连接Windows计算机

    可以在/usr/share/applications/目录下启动Remmina远程桌面客户端或者直接在Dash中搜索Remmina即可 启动后如下图,可以新建,复制,编辑,删除远程桌面客户端 选择新建 ...

随机推荐

  1. 从#65279字符看dede模板页面编码问题

    今天一位朋友让帮忙给解决一个dede模板的问题,问题主要是:模板文件生成html文件之后会在body开头处加入一个可见的控制符&#65279,导致页面头部会出现一个空白行. 接到"& ...

  2. javascript中window.location.search的用法和作用。

    用该属性获取页面 URL 地址: window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostnam ...

  3. Mysql优化方面的知识

    Mysql优化方面的知识 第一方面:30种mysql优化sql语句查询的方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避 ...

  4. oracle11g安装教程(注意事项及图文教程)

    Oracle安装与重装注意事项 1.安装oracle(**) 注意:安装Oracle之前确定自己的主机(计算机)名要保证计算机名是英文的. 1.oracle的安装文件不要放在含有中文的目录当中,如:d ...

  5. 如何更改MyEclipse中XML文件的字体?

    windows>Preferences>General>Appearance>Colors and Fonts>Basic>Text Font

  6. MySQL 多版本并发控制(MVCC)

    可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁的操作,因此开销会很低.主要实现的是非阻塞的读操作,写操作也只是锁定必要的行.MVCC的实现是通过保存数据在某个时间点的快照来实现的,也 ...

  7. Linux实践篇--linux软件的安装,更新与卸载

    本文出处:http://www.cnblogs.com/lhj588/archive/2012/07/17/2595328.html,感谢作者分享. Linux常见的安装为tar,zip,gz,rpm ...

  8. Linux 下 编译Xerces-c++

    按照 doc/html 文件夹中的详细指导编译 Xerces-C++ 共享库. 下面的命令展示了如何用压缩的源文件编译 Xerces-C++ 库. 这里假定在像 /home/ 这样的目录中有 xerc ...

  9. web.xml 中CharacterEncodingFilter类的学习

    过滤器配置 当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题 //编码方式配置 <filter> <fi ...

  10. 豹哥嵌入式讲堂:ARM知识概要杂辑(4)- Cortex-M处理器性能指标

    1.处理器的性能指标 用于评价CPU的性能指标非常多,不同的性能侧重点下的测试标准可能得出的指标值不同,下面介绍嵌入式行业广泛使用的两个经典的测试标准. 1.1 Dhrystone标准 Dhrysto ...