Linux openssh服务详解

大纲

一、什么是ssh

二、ssh密码认证过程

三、ssh密钥认证过程

四、openssh服务详解

五、双机互信实现




一、什么是ssh

传统的网络服务程序,如rsh、FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

SSH之另一项优点为其传输的数据可以是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”


二、ssh密码认证过程

①客户端第一次向服务器端发起连接请求,如 ssh UserName@Host

②服务器端接收到用户连接请求,然后将自己的公钥(Public Key)发送给客户端

③客户端生成对称密钥,用刚才的公钥(Public Key)加密账号密码发送到服务器端

④服务器用自己的私钥(Secret Key)解密,然后验证账号密码并验证是否允许登录


三、ssh密钥认证过程

①要想实现密钥认证,需要客户端事先将自己的公钥保存至服务器端的某个文件中

②客户端向服务器端发起连接请求,如 ssh UserName@Host

③此时客户端已有服务器端的公钥,于是服务器端便让客户端发送登陆账号

④客户端发送账号,再用自己的私钥加密一段数据之后再用密钥交换过程中生成的密钥加密传给服务器端

⑤服务器先用对称密钥解密第一段数据,再用保存在自己这里的客户端公钥解密,如果解密成功,则允许客户端登录


四、openssh服务详解

环境准备

    CentoOS5.8        172.16.1.110

    CentoOS6.5           172.16.1.111


1、安装openssh服务

[root@CentOS5 ~]# yum install -y "openssh" "openssh-server"        # CentOS5安装ssh客户端和服务器端
[root@CentOS6 ~]# yum install -y "openssh" "openssh-server"         # CentOS6安装ssh客户端和服务器端

2、查看ssh服务运行状态

[root@CentOS6 ~]# hostname 
CentOS6.5
[root@CentOS6 ~]# service sshd status      # 你所想要远程连接的主机sshd服务必须开启,否则无法连接
openssh-daemon (pid  1631) is running...

3、ssh远程连接

[root@CentOS5 ~]# hostname 
CentOS5.8
[root@CentOS5 ~]# ifconfig                                         # 当前位于CentOS5主机
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FE:82:38  
          inet addr:172.16.1.110  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fefe:8238/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:239433 errors:0 dropped:0 overruns:0 frame:0
          TX packets:186171 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:203871335 (194.4 MiB)  TX bytes:21157890 (20.1 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1093 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1093 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:128597 (125.5 KiB)  TX bytes:128597 (125.5 KiB)

[root@CentOS5 ~]# ssh [email protected]                            # 远程连接CentOS6
The authenticity of host '172.16.1.111 (172.16.1.111)' can't be established.
RSA key fingerprint is 1e:87:cd:f0:95:ff:a8:ef:19:bc:c6:e7:0a:87:6b:fa.
Are you sure you want to continue connecting (yes/no)? yes   # 是否接受服务器端发送的公钥信息
Warning: Permanently added '172.16.1.111' (RSA) to the list of known hosts. # 公钥保存至服务器端
[email protected]'s password: 
Last login: Wed Dec  2 23:32:27 2015 from 172.16.1.100
[root@CentOS6 ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:1B:6D:AF  
          inet addr:172.16.1.111  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe1b:6daf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8399 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4204 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10195648 (9.7 MiB)  TX bytes:344180 (336.1 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@CentOS6 ~]# hostname         # 可以看到已成功登陆到CentOS6主机上
CentOS6.5


五、双机互信实现

1、scp实现

[root@CentOS5 ~]# ssh-keygen -t rsa -P ''                            # 客户端生成密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):             # 私钥保存位置
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:
ea:f4:ca:1a:a4:f5:4d:34:6f:0c:75:a9:c4:57:6d:23 [email protected]
[root@CentOS5 ~]# scp ~/.ssh/id_rsa.pub [email protected]:~          # 将客户端公钥保存至服务器端 
[email protected]'s password: 
id_rsa.pub                    100%  396     0.4KB/s   00:00    
[root@CentOS5 ~]# ssh -l root 172.16.1.111                            # 登陆到服务器端
[email protected]'s password: 
Last login: Wed Dec  2 23:54:44 2015 from 172.16.1.110
[root@CentOS6 ~]# cat id_rsa.pub >> ~/.ssh/authorized_keys # 将公钥信息保存至文件中
[root@CentOS6 ~]# exit
logout
Connection to 172.16.1.111 closed.
[root@CentOS5 ~]# ssh 172.16.1.111 'ifconfig'       # 此时可以看到无需密码即可登陆执行命令并返回
eth0      Link encap:Ethernet  HWaddr 00:0C:29:1B:6D:AF  
          inet addr:172.16.1.111  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe1b:6daf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19439 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9296 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:23504301 (22.4 MiB)  TX bytes:831000 (811.5 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          
如此便实现了CentOS5无需密码登陆CentOS6,再在CentOS6主机上同样操作一遍,即可实现双机互信

2、ssh-copy-id实现

[root@CentOS5 ~]# ssh [email protected]
Last login: Wed Dec  2 23:56:56 2015 from 172.16.1.110
[root@CentOS6 ~]# > ~/.ssh/authorized_keys     # 先清除CentOS6保存的CentOS5的公钥信息
[root@CentOS6 ~]# exit
logout
Connection to 172.16.1.111 closed.
[root@CentOS5 ~]# ssh-keygen -t rsa -P ''                        # 客户端生成密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):          # 私钥保存位置
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:
4f:b3:14:de:a4:eb:1c:bf:67:dd:23:e1:05:d6:9f:32 [email protected]
[root@CentOS5 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]      # 使用ssh-copy-id复制公钥
[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[root@CentOS5 ~]# ssh [email protected] 'ifconfig'                    # 可以看到也实现了无需密码登陆
eth0      Link encap:Ethernet  HWaddr 00:0C:29:1B:6D:AF  
          inet addr:172.16.1.111  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe1b:6daf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19639 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9432 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:23527862 (22.4 MiB)  TX bytes:851044 (831.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)





你可能感兴趣的:(linux,openssh)