Openssh实战(1)

上一期我们说到如何玩弄openssl,不过这一期讲的是openssh,新手朋友们可别搞混了,openssh和openssl没有“五分钱”关系!

openssh是基于ssh协议开发的一款开源的程序实现使用ssh远程登陆你想操控的站点的一款工具!说得有点绕口,好吧!首先说说在没有ssh这个协议之前人们使用的telnet协议作为远程登陆的工具。

telnet是一个古老的协议,当时网络情况并不是很好能够远程进行通讯就万事大吉了,而且那时候也没有互联网!所以telnet最大的缺点就是不能加密进行通讯,所有的通讯(包括登陆的用户名和密码)都是明文传输。在这个大型互联网社会的森林里(暗藏着这么多野兽!)不加密通讯咋行?

ssh的代替telnet的作用就是能够进行加密通讯进行传输,ssh到现在一共两个版本:

  • V1:基于CRL-32做MAC(消息认证码),现在已经确定不安全(加密算法被攻破),容易遭到中间人攻击
  • V2基于双主机协议选择安全的MAC(这个MAC非物理地址的意思)方式;基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证!

ssh默认监听在tcp/22端口上,当然默认端口可不是什么好事情后面肯定得进行修改!

说完了ssh协议看看有哪些程序能够给我们提供给予ssh协议的服务,大多数情况下使用的当然是openssh,不过还有一个轻量级(合适用在嵌入式领域)的程序叫做:dropbear!

不过这一期肯定说说关于openssh的使用咯!

openssh分为client端和server端,首先说明client的玩法:

默认的openssh客户端的配置文件在/etc/ssh/ssh_config,先来看看配置文件:

openssh01

后面的部分我也没有截取,因为大多都是注释的,因为客户端文件其实没有必要进行修改,比如默认链接服务器的端口等!其实需要修改的配置文件在openssh的服务器端!

在openssh客户端中有两种办法可以实现远程登陆(其实实现ssh协议的程序都可以),第一种就是账号密码的方式、第二种就是给予密钥认证的方式,关于第二种我们稍后说!

基于账户密码进行认证:

语法格式:ssh [USER@]HOST [‘COMMAND’]

USER@ 指明用户名也可以使用-l USER代替。如果不指明用户则按照本机的用户作为用户名!
-p PORT 登入远程主机的端口
-x 支持x11(图形)转发
-Y 支持信任的X11

注:如果使用客户端ssh的后跟COMMAND可以直接执行命令,无需登陆远程主机!

基于密钥的认证:(使用openssh程序来远程登陆)

实验主机:一共两台,一台是客户端:172.16.1.10,还有一台是服务器端为:172.16.1.20

第一步:在客户端(172.16.1.10)生成一个密钥对(公钥和私钥)这个可以使用openssh自带的生成:

openssh02

看到了不?不过这里说明一下-f代表了指明文件存放位置和文件名,后面会让我们输入密钥密码,这个可以不输入按两下回车跳过,不过在企业环境严重建议给予密码!!!后面生成密钥对的时候会告诉你路径(画红线的就是)我放在的是家目录下,大家了一驶入ls -lh查看自己的公钥和私钥!

第二步:将自己客户端创建的公钥传送给远程服务器(172.16.1.20)对应的用户家目录,最好创建好家目录的.ssh目录!

openssh03

看这样就算创建完毕了,接下来就是把公钥送过去!!

openssh04

第一次传送会有提示,打YES即可,然后在服务器端(172.16.1.20)中可以看到这个公钥文件传送过来了!

openssh05

最后一步就是更改服务器端.ssh中把公钥的内容传送给authorized_keys文件:

openssh06

就这样就行了,不过注意的是:不要使用覆盖重定向”>”否则如果原先有公钥的话会被覆盖!

接下来当然要试试远程登陆了,执行ssh root@172.16.1.20即可:

openssh07

啥?还得让我属于密码?哪里做错了?好像…真心没做错啊!!!这个问题其实在写博客之前确实困扰过我!后来我在看客户端配置文件的时候发现了!其实加上一个条目即可!!!(还知道openssh客户端配置文件在哪不?不知道看前文)

openssh08

看到红线部分了不?加上这么一条即可,记住文件位置是你生成密钥对的私钥名字,如果生成的是test.ssh,这边的路径应该就为~/.ssh/test.ssh!可别照抄哦,然后就能顺利登陆了。其实identity file 就是身份认证文件,这边只是指明了默认的id_rsa!所以自己自定义的不行!

好了愉快的登陆了!

openssh09

成功搞定,这个是openssh的利用密钥对来登陆,客户端持有私钥,而服务器端使用公钥!如果使用的是xshell putty等windows ssh客户端,还有客户端命令和服务器端,我下次来讲解!

 

Comments

Leave a Reply

Your email address will not be published. Name and email are required