① ssh的简介算法
SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。 SSH是英文Secure Shell的简写形式。经过使用SSH,你能够把全部传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,并且也可以防止DNS欺骗和IP欺骗。安全
② 本例的应用场景服务器
用户在client(Linux)上经过ssh远程执行server(Windows)上的命令,好比c:\test.batssh
注:Linux版自带ssh Server且默认启动,具体设置方法请参见google。ide
ssh服务器软件有许多中,咱们这里使用的是免费的freeSSHd。工具
① 首先从官方站点下载软件并安装(http://www.freesshd.com/)ui
② 安装完成后进入配置界面(Server Status),确认SSH server正在运行状态google
③ 进入Users界面,设定一个访问的用户帐户(好比xut)加密
这里咱们创建一个叫xut的用户,认证有3种方式能够选择。从之后经过ssh运行命令的方便(无需输入密码)考虑,咱们选择Public key认证方式。选择Password方式的话,每次访问须要输入密码,此种方式较为繁琐并且安全性不高。而后开放其Shell权限。spa
④ 进入认证界面,确认Public key认证方式属于激活状态(选择Allowed或Required)
此时ssh服务器端的基本设置已经OK,可进一步进行更加详细的设置(好比访问限定等),此处再也不介绍。
注意:服务器端若是有防御墙时应该开发TCP 22号端口最为ssh链接使用。
因为咱们的客户端采用的是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): [直接回车]
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文件,并把结果返回,整个操做不需输入密码。
因为Windows不附带ssh的客户端和服务器端,咱们这里找一个免费的客户端软件PuTTY。
PuttY主页:http://www.chiark.greenend.org.uk/~sgtatham/putty/
各类客户端的比较: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.xxx c:\test.bat
(此时将执行服务器端的c:\test.bat脚本。)
注:第一次链接时将出现“The server's host key is not cached in the registry… ”提示,咱们选择肯定就能够了,之后就不会再出现了。