http://codingdao.com/wp/post/win-install-ssh/
我想用SSH远程访问Windows系统,先是在SourceForge上找到了Linux下标准的OpenSSH (sshd) 的Windows移植版,不过发现难配置,原因是我装了MSYS/MinGW和Cygwin这2个Unix工具集,不知OpenSSH的配置和哪个冲突,导致无法启动sshd服务程序。
几款Windows下的SSH服务软件
-
采用BSD许可证的开源软件。支持SSH、Telnet、SFTP协议。
-
有Home和Professional 2个版本,后者需付费注册。支持SSH、SFTP、SCP协议。
-
30天评估试用期,Personal版是免费的。支持SSH、VNC、SFTP、SCP协议。
我试用了KpyM的SSH服务软件,安装、配置、运行很简单上手,不过还是想用OpenSSH,毕竟在Linux下用它,很脸熟嘛,帮助、说明也多。然后在这里发现原来Cygwin工具集中就包含OpenSSH,(-_-^)!
配置Cygwin中的OpenSSH
-
通过Cygwin的安装程序安装完OpenSSH后,将系统环境变量CYGWIN置为ntsec(默认是tty),建议Cygwin使用Windows的安全规则。
-
将sshd所在目录加入Cygwin Shell环境的PATH变量中:在登录Shell的全局初始化脚本/etc/profile里的PATH中加入路径即可,我这里是/usr/sbin,因为Cygwin默认安装后只向PATH中加入bin类型的路径,而不加入sbin类型的路径。
-
Cygwin Shell下运行ssh-host-config,配置时有提示问题,在提示问题:"CYGWIN="时,回答ntsec。
-
ssh-host-config运行可能会失败,原因是:/、/usr/bin、/usr/lib等Unix目录必须以system方式挂载(默认是以user方式挂载),执行类似下列命令即可以system方式挂载这些目录:
1
mount -f -s -b "[Windows path to Cygwin]/" "/"
以system方式挂载目录后,会在注册表HKLM\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2键下保存这些Unix目录和Windows路径的对应关系。
更新:
我后来在使用新版本的Cygwin环境(Cygwin网络安装程序 2.674)和sshd(OpenSSH 5.3p1-1)时,没有出现这个问题。另外安装完这个版本的Cygwin之后,注册表中保存Cygwin设置的子键名也变成了:HKLM\SOFTWARE\Cygwin。
-
ssh-host-config运行成功后在/etc下生成sshd需要的密钥文件,可以将公钥传递给SSH客户端的使用者,以便做SSH服务器端的身份验证功能。
另外一种常用的SSH服务器端身份验证的方法是:大多数SSH客户端,比如:PUTTY,在第一次连接未知的SSH服务器端时,会提示服务器端公钥的散列码,称为SSH服务器端的fingerprint。用户通过对比服务器端计算的fingerprint和由SSH客户端提示的fingerprint,来人工判断是否连接的是期望的SSH服务端。
计算服务器端的fingerprint参考:How to get ssh server fingerprint information。计算fingerprint使用ssh-keygen -lf命令,如下:
1
# 列出所有密钥文件
2
$ ls /etc/ssh/*key*
3
/etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_key.pub
4
/etc/ssh/ssh_host_dsa_key.pub /etc/ssh/ssh_host_rsa_key
5
/etc/ssh/ssh_host_key /etc/ssh/ssh_host_rsa_key.pub
6
7
# 选择SSH服务器端使用的公钥,这里是ssh_host_rsa_key.pub,对它进行散列值(fingerprint)计算
8
$ ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
9
2048 9e:1a:5e:27:16:4d:2a:13:90:2c:64:41:bd:25:fd:35 /etc/ssh/ssh_host_rsa_key.pub
-
配置完sshd后,在Windows服务中会增加一个CYGWIN sshd服务,服务的主程序是cygrunsrv.exe,实际上是靠cygrunsrv.exe来启动sshd.exe的。最后可以用net start sshd或cygrunsrv -S sshd来启动sshd服务。
SSH使用技巧
-
空密码用户的登录
如果系统上的用户是空密码,无论是Windows还是Linux版的OpenSSH,默认配置下是不允许使用SSH客户端登录的,这是出于安全性的考虑。如果希望空密码的用户也能登录,需要更改sshd的配置文件(通常是sshd_config),设置选项:PermitEmptyPasswords yes。
-
不使用密码进行登录
margin-top: 0px; mar