OpenSSH for windows安装与设置
OpenSSH在windows下的安装与设置与在Linux下有所不一样,本文重点对这些差别作一点说明。首先,咱们简单的介绍一下整个安装过程。
OpenSSH的安装很是简单,首先在这里(http://sshwindows.sourceforge.net/)下载它的安装包,按照提示操做便可。
OpenSSH的安装能够分为客户端和服务器端两部分,你能够在安装向导中选择只安装某一部分。在所有安装的状况下,安装向导完成后,客户端就已经可用了。
不过为了使用密钥进行服务器登陆,安装完成后的第一件事就是生成本身的密钥对。打开一个命令行窗口,若是你准备生成运行SSH1的服务器的密匙,输入如下命令:
ssh-keygen -t keytype
若是服务器运行的是SSH2,则生成密钥时须要加-d选项。命令以下:
ssh-keygen -d -t keytype
这里keytype能够是dsa, rsa,或rsa1,按照提示选择密钥存放的地点和文件名,密钥对默认为存储在windows我的设置目录下的.ssh目录下。在建立密钥的过程当中,会询问密钥保护密码,若是你不须要密码,能够直接输入回车键跳过。但这样任何取得你私钥的人均可以利用它以你的身份在服务器上登陆。
为了使用生成的密钥进行登陆,接下来须要作的事就是把你的公钥上传到须要登陆的服务器。不管你用哪一种方法生成的密钥,都会生成一对文件,其中公钥以.pub结尾。将.ssh目录中的公钥上传到服务器中,而后在服务器(假定是Linux服务器)上进入登陆账户的家目录,输入下面的命令:
cat publickeyname >> authorized_keys
publickeyname是你的公钥文件的文件名。若是它不在当前目录里,还要加上到文件的引用路径。
若是用SSH登陆的服务器是一台windows服务器,可使用如下命令:
copy /b authorized_keys + publickeyname authorized_keys
至此,你已经可使用基本密钥的方法登陆SSH服务器了,OpenSSH提供了下面这些基本命令行的命令:
ssh <user@servername>
scp <localfilename> <user@servername>:<destinationdirectory>
sftp <user@servername>
关于这些命令的详细使用方法咱们会在另外一篇文章晨介绍。
除了客户端,OpienSSH套件还包含了服务器端,在安装程序结束后,服务器端还不能马上使用,须要作一些进一步的设置。
咱们知道,OpenSSH原来是在Linux环境下使用的,它使用的用户密码和组的信息通常从服务器上的passwd和group文件中取得,而在windows环境下用户信息存放的位置显然是不一样的。前面咱们也提到OpenSSH for windows其实是Cygwin套件里的OpenSSH软件包,所以,它在windows下的使用也要依赖于Cygwin创建起的Linux仿真环境。
为了让OpenSSH的服务器正常运行,首先要在Cygwin仿真环境中创建/etc/passwd和/etc/group文件,在安装好OpenSSH for windows后,程序会将OpenSSH的安装目录作为Cygwin仿真系统根目录,并在/bin下存放各执行文件,在/etc下存放配置文件以符合Linux程序的环境要求。所以,在安装好程序后,咱们须要打开命令行窗口,进入OpenSSH安装目录下的bin目录,运行以下命令生成所需的passwd和group文件。
mkgroup -l >> ..\etc\group (local groups)
mkgroup -d >> ..\etc\group (domain groups)
mkpasswd -l [-u ] >> ..\etc\passwd (local users)
mkpasswd -d [-u ] >> ..\etc\passwd (domain users)
这样能够把域和本机的组与用户信息导入到Cygwin的账户和组文件中去。
而后运行以下命令启动OpenSSH服务。
net start opensshd
如今,你就能够在其它机器上利用SSH登陆本机了。
在windows系统下使用OpenSSH,须要注意下面这些问题:
一、 StrictModes问题
有时运行在windows系统上的OpenSSH服务器会没法识别登陆系统使用的公钥(特别是在一些Windows XP系统上),若是出现这样的问题,能够进行以下处理。
将SSHD服务器的配置文件sshd.conf中的StrictModes选项设置为关闭便可以解决这个问题。
二、 Windows路径问题
在使用scp和sftp以及设置passwd文件中的用户登陆目录里,咱们都会遇到目录问题,咱们知道linux的文件系统与windows的组织结构有很大差别,因为OpenSSH的使用环境主要是在Linux下,这些地方的路径模式也用的是Linux模式。在这些地方为了访问Cygwin虚拟根之外的目录,Cygwin提供了一种目录转换机制,在目录前加/cygdrive/DRIVELETTER/引用指定盘符的目录。这里DRIVELETTER是指目录所在的盘符,好比访问C盘的winnt\system32目录用如下目录引用/cygdrive/c/winnt/system32。它实际提供了一种两类目录结构之间的映射。