实验环境
服务端:xuegod-63 IP:192.168.1.63
客户端:xuegod-64 IP:192.168.1.64
客户端普通用户:ceshi 密码:123456
安装好扫描软件rpm -ivh /mnt/Packages/nmap-5.21-4.el6.x86_64.rpm
实验目标
1:SSHD服务介绍
2:SSHD服务安装配置
3:两Linux服务器之间数据拷贝
4:SSHD服务作用:
实验步骤
1:搭建环境
1):网桥模式
2):vmtools安装完毕
3):yum源配置完毕
4):nmap安装完毕
5):添加用户完毕
2:实验脚本
第一块:sshd简述与登录应用
SSHD服务简述
SSH 协议:安全外壳协议。为 Secure Shell 的缩写。SSH 为建立在应用层和传输层基础上的安全协议。
sshd服务使用SSH协议可以用来进行远程控制, 或在计算机之间传送文件。
而实现此功能的传统方式,如telnet(终端仿真协议)都是极为不安全的,并且会使用明文传送密码。
OpenSSH软件包,提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。
Ssh的标准端口
[root@xuegod-63 ~]# vim /etc/services
查看一下ssh的包
[root@xuegod-63 Packages]# ls openssh*
openssh-5.3p1-70.el6.x86_64.rpm #核心文件包
openssh-askpass-5.3p1-70.el6.x86_64.rpm #xshell用的包
openssh-clients-5.3p1-70.el6.x86_64.rpm #客户端的包
openssh-server-5.3p1-70.el6.x86_64.rpm #服务端的包
#这四个包是默认安装好的
查看一下包是否安装好
[root@xuegod-63 Packages]# rpm -qa | grep openssh
openssh-clients-5.3p1-70.el6.x86_64
openssh-server-5.3p1-70.el6.x86_64
openssh-5.3p1-70.el6.x86_64
openssh-askpass-5.3p1-70.el6.x86_64
#可以清楚的看到这四个包是默认安装好的,因此不需要我们去安装的,只需要我们去启动一下就OK了
查看包的安装路径 - - - 这里是举例查看服务端的包
[root@xuegod-63 Packages]# rpm -pql openssh-server-5.3p1-70.el6.x86_64.rpm
/etc/rc.d/init.d/sshd #ssh服务端的启动路径
/etc/ssh/sshd_config #ssh服务端的配置文件路径
注:
OpenSSH 常用配置文件有两个/etc/ssh/ssh_config 和/etc/ssh/sshd_config。
ssh_config 为客户端配置文件
sshd_config 为服务器端配置文件
查看ssh的运行状态与关闭ssh服务运行
1:查看状态的2中方法
[root@xuegod-63 ~]# service sshd status
[root@xuegod-63 ~]# /etc/init.d/sshd status
#sshd的四个包默认情况下是安装好的,但是默认情况是关闭运行的
2:关闭ssh服务运行的两种方法
[root@xuegod-63 ~]# service sshd stop
[root@xuegod-63 ~]# /etc/init.d/sshd stop
启动服务的3种方法
[root@xuegod-63 Packages]# /etc/init.d/sshd start
[root@xuegod-63 Packages]# /etc/init.d/sshd restart
[root@xuegod-63 Packages]# service sshd restart
Ssh服务开机加载并查看启动级别
[root@xuegod-63 ~]# chkconfig sshd on
[root@xuegod-63 ~]# chkconfig --list sshd
sshd 0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
第二块:修改配置文件,实战举例:
1:SSH运程登录:身份验证
1):Ssh命令参数
[root@xuegod-63 ~]# ssh
-f :需要配合后面的命令,可以不登陆远程主机就直接发送命令过去
-p:如果sshd服务启动在非标准端口,需要使用此参数
2):Ssh使用语法
Ssh+远程登录的用户名+@+远程登录的ip地址
3):以标准端口22,用root进程登录远程主机
#由于ssh后面没有加用户名,因此默认的是使用当前用户(即1.63上的root用户)来登陆远程服务器的,
在开头以RSA的哪行后面接的就是远程服务器(即1.64,客户端)的公钥指纹码,如果确认没有问题,那么你就需要输入yes来表示确认,将该指纹码写入到服务器公钥记录文件(~/etc/ssh/ssh_hosts_*)以便对比服务器的正确性,
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
现在由于远程服务器(即1.64客户端)的公钥文件已经被记录在本机1.63上了,因此在后面本机1.63在重复登录客户端的话,就不在需要指纹码验证了,
4):测试- - -加入用户名远程登录的两种方法
#由于加入了用户名,因此该主机1.63远程登录到客户端的普通用户“ceshi”下,并且,因为该主机1.63登陆过客户端1.64,所以再次登录的时候并没有出现客户端主机公钥的指纹码信息了。
5):以飞标准端口222登录远程主机
1:设置sshd 监听端口号
# SSH 预设使用 22 这个port,也可以使用多个port,即重复使用 port 这个设定项目! # 例如想要开放 sshd 端口为 22和 222 ,则多加一行内容为: Port 222 即可 # 然后重新启动 sshd 这样就好了。 建议大家修改 port number 为其它端口。防止别人暴力破解。
|
2:查看端口
[root@xuegod-63 ~]# netstat -anutp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 15477/sshd
tcp 0 0 :::22 :::* LISTEN 15477/
#这里可以看到监听的端口是22
3:修改sshd服务默认监听的端口为22和222
[root@xuegod-63 ~]# vim /etc/ssh/sshd_config
4:重启服务
[root@xuegod-63 ~]# /etc/init.d/sshd restart
停止 sshd: [确定]
正在启动 sshd: [确定]
5:再次查看端口
[root@xuegod-63 ~]# netstat -anutp | grep ssh
tcp 0 0 0.0.0.0:222 0.0.0.0:* LISTEN 16530/sshd
tcp 0 0 :::222 :::* LISTEN 16530/sshd
#这里可以看到监听的是222端口
6:测试
#可以看到,我们是没有登录进去的,告诉我们端口22,连接失败。
#加“-p”以非端口的形式远程登录。
2:服务器公钥记录文件
在该主机1.63登录客户端1.64时,本机会主动利用客户端发过来的公钥信息去对比自己的~/etc/ssh/ssh_hosts_*下中有无客户端的公钥,然后进行下面的操作
1):若该主机1.63 中~/etc/ssh/ssh_hosts_*下没有记录客户端的公钥信息,则会询问该主机1.63是否需要记录远程客户端的公钥信息,即范例中回答 “yes”的哪一步。若要记录,则回答yes,表示记录,就会将客户端1.64的公钥信息记录在该主机1.63的~/etc/ssh/ssh_hosts_下,且执行后续工作,如果不记录的话,则回答no即可,或者直接“ctrl+c”终端回话,并且退出登录工作。
2):若该主机1.63 中~/etc/ssh/ssh_hosts_*下有记录客户端的公钥信息,则会将客户端1.64发过来的公钥信息与自己的~/etc/ssh/ssh_hosts_下记录的公钥信息进行对比,如果相同,则继续进行登录工作,如果不相同的话,则会出现警告信息,并离开登录工作。这是客户端的自我保护功能,以避免你的服务器是被别人伪装的。
思考
服务器ssh会经常变更,如果测试用的主机会经常重新安装,那么也就是说,测试主机记录的服务器的公钥信息肯定会不同,那就无法登陆了,这该怎么办呢?
解答:
由于远程服务器客户端的公钥信息是记录在服务端1.63的~/etc/ssh/ssh_hosts下面的,那么我们只需要将原有的公钥信息给删除掉,在重新启动服务,再重新连接远程服务器并重新记录新的公钥信息不就OK了吗?
步骤
[root@xuegod-63 ~]# rm /etc/ssh/ssh_hosts*
[root@xuegod-63 ~]# /etc/init.d/sshd restart
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2017-05/143461p2.htm
