首页 > 代码库 > 【linux基础】26、openssh基础

【linux基础】26、openssh基础

一、远程登录协议

1、telnet简介

  以前,很少有人买得起计算机,更甭说买功能强大的计算机了。所以那时的人采用一种叫做Telnet的方式来访问Internet:也就是把自己的低性能计算机连接到远程性能好的大型计算机上,一旦连接上,他们的计算机就仿佛是这些远程大型计算机上的一个终端,自己就仿佛坐在远程大型机的屏幕前一样输入命令,运行大机器中的程序。人们把这种将自己的电脑连接到远程计算机的操作方式叫做“登录”,称这种登录的技术为Telnet(远程登录)。


2、Telnet的工作原理

   当你用Telnet登录进入远程计算机系统时,你事实上启动了两个程序,一个叫Telnet客户程序,它运行在你的本地机上,另一个叫Telnet服务器程序,它运行在你要登录的远程计算机上,本地机上的客户程序要完成如下功能:

1) 建立与服务器的TCP联接

2) 从键盘上接收你输入的字符

3) 把你输入的字符串变成标准格式并送给远程服务器

4) 从远程服务器接收输出的信息

5) 把该信息显示在你的屏幕上

   远程计算机的“服务”程序监听在tcp 22端口,一接到你的请求,它马上活跃起来,并完成如下功能:

1) 通知你的计算机,远程计算机已经准备好了

2) 等候你输入命令

3) 对你的命令作出反应(如显示目录内容,或执行某个程序等)。

4) 把执行命令的结果送回给你的计算机

5) 重新等候你的命令


3、telnet的使用

安装telnet服务器端和客户端:

[root@Node4 ~]# yum install telnet telnetserver    #安装telnet客户端和服务端程序
[root@Node4 ~]# rpm -ql telnet-server
/etc/xinetd.d/telnet                    #telnet是由超级守护进程管理的服务                 
/usr/sbin/in.telnetd
/usr/share/man/man5/issue.net.5.gz
/usr/share/man/man8/in.telnetd.8.gz
/usr/share/man/man8/telnetd.8.gz
[root@Node4 ~]# rpm -ql telnet
/usr/bin/telnet
/usr/share/man/man1/telnet.1.gz

启动telnet-server:

[root@Node4 ~]# service xinetd start

[root@Node4 ~]# chkconfig telnet on

使用客户端telnet:

     telnet [-l user] host-name [port]

[root@Note3 ~]# telnet 192.168.10.4
Trying 192.168.10.4...
Connected to 192.168.10.4.
Escape character is ‘^]‘.
CentOS release 6.5 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64
login: root                                 #telnet默认禁止root远程登录
Password: 
Login incorrect

login: anyfish                              #要使用远程主机上的用户帐号和密码登录
Password: 
Login incorrect

login: xj
Password: 
Last login: Sat Jan  7 17:33:50 from Node3

[xj@Node4 ~]$

总结:

   Telnet不是一种安全通信协议,因为它并不使用任何安全机制,通过网络/互联网传输明文格式的数据,包括密码,所以谁都能嗅探数据包,获得这个重要信息。

  Telnet中没有使用任何验证策略及数据加密方法,因而带来了巨大的安全威胁,这就是为什么telnet不再用于通过公共网络访问网络设备和服务器。

   telnet的最佳用途就是检查远程主机上任何特定服务(基于tcp协议的服务)的状态

比如说,如果我们想要检查在本地服务器上通过端口80运行的Apache Web服务的状态,可以这么做:

[root@Node4 ~]# telnet 192.168.10.3 22         #此时不需要远程主机开启了telnet服务
Trying 192.168.10.3...
Connected to 192.168.10.3.                     #已连接
Escape character is ‘^]‘.
SSH-2.0-OpenSSH_5.3
                             #此时阻塞在这里,是等待我们输入命令,就表示22号端口开启了,远程主机有服务监听在此端口,如果输入的命令不符合对方服务的协议就会被强制退出
Protocol mismatch.
Connection closed by foreign host.
[root@Node4 ~]# 
[root@Node4 ~]# telnet 192.168.10.3 23         #如果是没监听的端口,会明确的拒绝
Trying 192.168.10.3...
telnet: connect to address 192.168.10.3: Connection refused
[root@Node4 ~]#




openssh客户端组件:

       ssh:

           ssh USERNAME@HOST

           ssh -l USERNAME HOST

               -p port:指定要连入端口

       ssh认证机制:

            基于口令:

            基于密钥:

                客户端在本地生成一对密钥,客户端将公钥复制到要登录的用户的家目录下.sshz中的一个名为authorized_keys或authorized_key2文件中

  配置过程:

          1、生成密钥对儿

                # ssh-keygen [-t rsa]




【linux基础】26、openssh基础