摘自:
http://wenku.baidu.com/view/fb9cef19227916888486d743.html
1
如何在
Windows
上建立
ssh
服务器
作者:许腾
日期:
2010/9/16
1.
ssh
简介以及本例的应用场景
①
ssh
的简介
SSH
是一个用来替代
TELNET
、
FTP
以及
R
命令的工具包,
主要是想解决口令在网上明文传输的
问题。为了系统安全和用户自身的权益,推广
SSH
是必要的。
SSH
是英文
Secure
Shell
的简
写形式。通过使用
SSH
,你可以把所有传输的数据进行加密,这样
"
中间人
"
这种攻击方式就不
可能实现了,而且也能够防止
DNS
欺骗和
IP
欺骗。
②
本例的应用场景
用户在
client(Linux)
上通过
ssh
远程执行
server(Windows)
上的命令,
比如
c:\test.bat
注:
Linux
版自带
ssh Server
且默认启动,具体设置方法请参见
。
2.
ssh
服务器的安装
(Windows)
ssh
服务器软件有许多中,我们这里使用的是免费的
freeSSHd
。
①
首先从官方站点下载软件并安装(
http://www.freesshd.com/
)
②
安装完成后进入配置界面(
Server Status
)
,确认
SSH server
正在运行状态
③
进入
Users
界面,设定一个访问的用户账户(比如
xut
)
ssh client
(
Linux
或
Windows
)
ssh server
(
windows
)
2
这里我们建立一个叫
xut
的用户,认证有
3
种方式可以选择。从以后通过
ssh
运行命令的方
便(无需输入密码)考虑,我们选择
Public key
认证方式。选择
Password
方式的话,每次
访问需要输入密码,此种方式较为繁琐而且安全性不高。然后开放其
Shell
权限。
3
④
进入认证界面,确认
Public key
认证方式属于激活状态(选择
Allowed
或
Required
)
此时
ssh
服务器端的基本设置已经
OK
,可进一步进行更加详细的设置(比如访问限定等)
,此
处不再介绍。
注意:服务器端如果有防护墙时应该开发
TCP 22
号端口最为
ssh
连接使用。
3.
ssh
客户端的设置
(Linux)
由于我们的客户端采用的是
Linux
,所以不用安装客户端软件,系统自带的就有。
我们需要在
Linux
上创建一个共有和私有的密钥对,私有密钥放到客户端(
Linux
)上,共有
密钥放到服务器端(
Windows
)上。在
Linux
上通过
ssh-keygen
命令来创建。
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [
直接回车
]
[root@localhost ~]# ssh -v
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003
usage: ssh [-1246AaCfghkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D port] [-e escape_char] [-F configfile] [-i identity_file]
[-L port:host:hostport] [-l login_name] [-m mac_spec] [-o option]
[-p port] [-R port:host:hostport] [-S ctl] [user@]hostname [command]
4
Enter passphrase (empty for no passphrase): [
直接回车
]
Enter same passphrase again: [
直接回车
]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53
其中,
/root/.ssh/id_rsa
为私有密钥,
/root/.ssh/id_rsa.pub
为共有的密钥。
此时,需要把共有密钥放到服务器端(
Windows
)进行保存,以便于服务器端进行安全检查。
我们通过认证界面找到存放共有密钥的地址
(Public key folder)
。
如上图所示,然后在
c:\Program Files\freeSSHd
目录下创建以登录用户名为名字的文本文
件,此处举例为
xut
文件。并将
/root/.ssh/id_rsa.pub
文件中的内容拷贝到
c:\Program
Files\freeSSHd\xut
文件中。
至此,客户端和服务器端的密钥设置已经完成,可以通过如下命令进行远程的命令执行。
ssh xut@172.28.xx.xxx "c:\test.bat"
这条命令将执行服务器端的
C
盘下的
test.bat
文件,并把结果返回
,
整个操作不需输入密码。
4.
ssh
客户端的设置
(Windows)
由于
Windows
不附带
ssh
的客户端和服务器端,我们这里找一个免费的客户端软件
PuTTY
。
PuttY
主页:
http://www.chiark.greenend.org.uk/~sgtatham/putty/
5
各种客户端的比较:
http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
在
Putty
主页,我们下载
putty.zip
(含除了
PuTTYtel
以外的所有文件)
,然后解压会发现一
个叫
plink.exe
的文件,这就是我们的
ssh
客户端命令行软件。
我们首先要成一个共有和私有的密钥对,使用
putty.zip
中附带的
PUTTYGEN.exe
生成。
启动
PUTTYGEN.exe
后可以见到下图界面,点击
[Generate]
即可生成所需密钥对。
注意:由于是采用随机算法生成,需要不停地在对话框上移动鼠标进度条才会增加,否则将
保持不变。
密钥生成完毕后,可以把私有密钥进行保存,为了登录简单起见不对私钥进行加密,提示没
有
passphrase
选择忽略即可。假设我们这里把私钥保存为
pri_key.ppk
。
我们把公钥放在
freeSSHd
端(
ssh
服务器端)进行保存,具体保存方法参见【
ssh
客户端的
设置
(Linux)
】
。
在
Windows
客户端,执行如下命令进行
ssh
连接,并不需要输入密码即可通过密钥进行自动
认证。
plink -i pri_key.ppk
xut@172.28.xx.xx
x c:\test.bat
(此时将执行服务器端的
c:\test.bat
脚本。
)
注:第一次连接时将出现“
The server's host key is not cached in the registry
„ ”
提示,我们选择确定就可以了,以后就不会再出现了