Linux 期中架构 SSH

为其他网络服务提供安全协议。替代Telnet

    SSH:   实现数据加密传输 22  默认支持root用户远程连接

类似sftp-server服务

nmap -p 22 10.0.0.41

nc 10.0.0.41 22

    telnet:实现数据明文传输 23  默认不支持root用户远程连接

###    1个服务始终无法启动

##

01 查日志

##

02 检查服务端口有无冲突

##

netstat -lntup | grep 873

 

##ssh远程服务对比

 

 

如何实现telnet远程管理:

服务端配置

第一里程:下载安装telnet远程管理服务端软件

yum install -y telnet-server telnet

  

第二里程:编写xinetd文件,实现管理telnet服务

特殊的服务:telnet  rsync

vim /etc/xinetd.d/telnet

disable = no

 

第三里程:启动telnet服务

    /etc/init.d/xinetd start

第四里程:进行服务检查测试

netstat -lntup|grep 23

[root@m01 ~]# /etc/init.d/xinetd restart

Stopping xinetd:                                           [  OK  ]

Starting xinetd:                                           [  OK  ]

ssh 服务与telnet服务区别

ssh服务是加密服务协议 telnet是非加密服务协议

ssh服务默认支持root用户登录   telnet不支持root用户登录

SSH知识要点   SSHv2     SSH和SFTP SCP

 

SSH服务命令说明

查看命令属于哪个命令大礼包

[root@m01 ~]# rpm -qf `which ssh`

openssh-clients-5.3p1-122.el6.x86_64

[root@m01 ~]# rpm -ql openssh-clients

/etc/ssh/ssh_config     --客户端配置文件

/usr/bin/.ssh.hmac

/usr/bin/scp                     ###远程复制命令

/usr/bin/sftp                   ###远程文件传输服务

/usr/bin/slogin               ###远程登录命令    slogin 10.0.0.41

/usr/bin/ssh                      ###远程登录管理主机命令

/usr/bin/ssh-add

/usr/bin/ssh-agent

/usr/bin/ssh-copy-id    ###ssh服务分发公钥

/usr/bin/ssh-keyscan

/usr/libexec/openssh/ssh-pkcs11-helper

 

[root@m01 ~]# rpm -ql openssh-server

/etc/pam.d/ssh-keycat                           

/etc/pam.d/sshd

/etc/rc.d/init.d/sshd        ###ssh服务启动脚本文件

/etc/ssh/sshd_config          ###ssh服务配置文件

/etc/sysconfig/sshd

/usr/libexec/openssh/sftp-server

/usr/libexec/openssh/ssh-keycat

/usr/sbin/.sshd.hmac

/usr/sbin/sshd                        ###ssh服务进程启动命令

[root@m01 ~]# ps -ef | grep ssh

root       1182      1  0 01:19 ?        00:00:00 /usr/sbin/sshd

root       6246   1182  0 08:04 ?        00:00:00 sshd: root@pts/0

root       6280   6248  0 08:09 pts/0    00:00:00 grep ssh

启动命令:/usr/sbin/sshd     要用绝对路径进行启动

SSH服务软件版本

SSH服务是守护进程服务daemon  sshd

 

SSH服务实现连接安全建立连接,利用钥匙和锁头

01  钥匙==私钥   公钥==锁头     私钥可以解密公钥(钥匙可以开启锁头)

02  公钥可以在网络中传输,私钥可以在本机主机保存

    1)客户端发出远程连接请求

    2)服务端会响应一个确认信息        

3)客户端进行确认并输入密码信息

4)服务端会发送一个公钥信息(锁头)给客户端

5)客户端拥有了公钥(锁头)信息

sshv1版本:钥匙和锁头不会定期更换,容易被黑客人员破解

sshv2版本:钥匙和锁头会进行定期更换,不容易被黑客人员破解

 

 

 

SSH服务认证类型

    基于密码的方式:交互方式远程连接

基于密钥的方式:免交互方式远程连接

基于密钥:

 

 

基于密钥方式工作原理:

1)在客户端创建出新的钥匙和锁头,创建了一个密钥对

2)客户端将锁头传输给服务端(基于密码传输)

3)服务端保存后接受公钥文件(锁头)

4)当客户端再次请求和服务端建立连接

5)服务端会进行公钥质询过程

6)客户端利用私钥解密公钥,将解密结果发给服务端

7)最终实现客户端和服务端远程连接建立

SSH面试考题

 

 

[root@m01 ~]# ss -lntup | grep 22

tcp    LISTEN     0      128                   :::22                   :::*      users:(("sshd",1182,4))

tcp    LISTEN     0      128                    *:22                    *:*      users:(("sshd",1182,3))

 

SSH配置文件信息

ssh配置文件修改--默认登录参数

[root@m01 ~]# cd /etc/ssh/

[root@m01 ssh]# ll

total 156

-rw-------. 1 root root 125811 Mar 22  2017 moduli

-rw-r--r--. 1 root root   2047 Mar 22  2017 ssh_config

-rw-------  1 root root   3876 May  2 14:52 sshd_config

/etc./ssh/sshd_config     ###sshd配置文件

 

01   井号注释的参数信息  表示默认配置

修改默认端口号

#Port 22    ###进行修改

#ListenAddress 0.0.0.0      

配置文件修改后要重启才能生效  

[root@m01 ssh]# /etc/init.d/sshd restart

Stopping sshd:                                             [  OK  ]

Starting sshd:                                             [  OK  ]

#ListenAddress 0.0.0.0         ###10.0.2.10 -->指定监听的网卡信息

 

SSH监听配置测试

 

如果连接慢需要修改2个参数

GSSAPIAuthentication no

UseDNS no

 

 

SSH服务入侵防范

 

 

[root@m01 ssh]# nmap -p 1-1024 www.baidu.com

Starting Nmap 5.51 ( http://nmap.org ) at 2018-06-04 09:27 CST

Nmap scan report for www.baidu.com (61.135.169.121)

Host is up (0.025s latency).

Other addresses for www.baidu.com (not scanned): 61.135.169.125

Not shown: 1022 filtered ports

PORT    STATE SERVICE

80/tcp  open  http

443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 49.93 seconds

SSH服务相关命令用法

01  SSH远程登录命令

 

 

02      SCP远程复制数据命令

 

03  SFTP命令   数据传输命令

 

 

 

###SSH-key基于密钥认证部署

管理机:M01

受控端:backup

nfs01

web01

 

部署过程:(运维领域:越安全 效率越低   效率越高安全性越低)

1 第一个里程碑   在管理服务器上创建密钥对信息 (公钥和私钥)

[root@m01 ~]# ssh-keygen -t dsa

Generating public/private dsa key pair.

Enter file in which to save the key (/root/.ssh/id_dsa):    ###私钥创建后保存位置

Enter passphrase (empty for no passphrase):                                 ###确认私钥需不需要进行加密设置密码,测试环境设置为空

Enter same passphrase again:                                                                  ###设置密码为空

Your identification has been saved in /root/.ssh/id_dsa.

Your public key has been saved in /root/.ssh/id_dsa.pub.

The key fingerprint is:

83:63:87:1d:98:cc:4a:d2:c0:f5:0c:b0:78:5d:bb:bf root@m01

The key's randomart image is:

+--[ DSA 1024]----+

| .ooo .          |

| ..= B +         |

|. + + O .        |

| . o . = .       |

|    . * S        |

|     . + .       |

|        .        |

|         .       |

|        E        |

+-----------------+

[root@m01 ~]# cd /root/.ssh/

[root@m01 .ssh]# ll

total 12

-rw------- 1 root root 672 Jun  4 10:21 id_dsa                                       ###创建生成的私钥文件(钥匙)

-rw-r--r-- 1 root root 598 Jun  4 10:21 id_dsa.pub                               ###创建生成的公钥文件(锁头)

-rw-r--r-- 1 root root 786 May 19 15:53 known_hosts

2 第二个里程碑      分发公钥文件     id_dsa.pub -->    authorized_keys

-i  指定要分发的公钥文件和路径信息

[user@]  ---以什么用户分发公钥    如果不输入以当前系统用户分发公钥

machine -->将公钥分发到哪台主机上

[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]

The authenticity of host '172.16.1.8 (172.16.1.8)' can't be established.

RSA key fingerprint is c8:17:90:8d:90:a4:f7:5b:10:19:36:7a:6c:5d:b8:7b.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '172.16.1.8' (RSA) to the list of known hosts.

[email protected]'s password:

Now try logging into the machine, with "ssh '[email protected]'", and check in:    <--现在可以试图登录远程主机,利用ssh  [email protected]  进行登录  -->

  .ssh/authorized_keys

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

[root@nfs01 ~]# ll /root/.ssh/

total 8

-rw------- 1 root root 1794 Jun  4 10:42 authorized_keys

3 第三个里程碑     登录测试     不要输入密码就可以直接登录了

[root@m01 ~]# ssh [email protected]

Last login: Wed May 23 21:40:28 2018 from 10.0.0.1

[root@web02 ~]#

说明:显示以上信息表明基于密钥的登录信息已经成功了

4   第四个里程碑   免登录执行命令操作

[root@m01 ~]# ssh [email protected] "hostname -i"    -->   不用登录到远程主机,直接在远程主机上执行命令  返回输出结果

172.16.1.8

说明批量管理主机

###基于密钥批量管理主机的扩展

思考:如果服务端端口号修改了,可以正常分发公钥?

[root@m01 bin]# vim ssh-copy-id

A:第一种解决方法  在$1 前新增   -p52113  (修改的端口),再次执行分发公钥就可以解决

B:第二种解决方法

在语句:ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]当中

$1  表示的是[email protected]

修改后的语句为:ssh-copy-id -i /root/.ssh/id_dsa.pub "-p52113 [email protected]"

shift参数,在shell当中很有用;

作用:  sh test.sh  a  b c  d

echo $1 $2 $3 $4

shift    -->将传参的参数向前递进

循环:for 循环

white 循环

until    循环     循环条件为真时   停止循环,为假时,一直循环(死循环)

[root@m01 scripts]# cat shift.sh

#!/bin/bash

until [ $# -eq 0 ]                        ###    $# 传参的总个数

do

    echo $*                                         ###     $*  把所有传参的参数都输出出来

    shift

done

[root@m01 scripts]# sh shift.sh 1 2 3 4 5 6

1 2 3 4 5 6

2 3 4 5 6

3 4 5 6

4 5 6

5 6

6

说明    分发公钥的实质 ,就是通过ssh远程执行公钥命令

1      切换到用户家目录下;临时设置umask值

2      test  类似于if  判断客户端相应用户家目录中有没有.ssh目录;如果没有就进行创建

3      将管理端公钥文件中的内容添加到客户端 .ssh/authorized_keys   默认该文件不存在;需要创建,文件权限(600)

问题2   01  分发公钥时实现免交互

为什么要实现免交互:

当被管理主机众多时,需要采用批量分发,通过批量分发脚本,会产生阻碍因素,因此期望能够实现免交互

阻碍脚本运行的因素

01 创建密钥对时,需要进行交互

a     指定创建私钥文件保存路径

b     指定私钥文件加密的密码信息

02  分发公钥时,需要进行交互

        a   需要yes/no 确认交互

        b   第一次分发公钥要输入密码

批量分发公钥脚本

 1 #!/bin/bash
 2 \rm /root/.ssh/id_dsa*
 3 ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" &>/dev/null
 4 #ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q    ### 等价于上一种写法  -q安静的执行 不要输出
 5 #分发密钥文件
 6 for ip in 31 41
 7 do
 8     echo "==================================fenfa begin======================================="
 9     sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no [email protected].$ip"
10     echo "==================================fenfa end========================================"
11     echo ""
12 done
View Code

密斗性

脚本编写完要可以反复执行  而且没有报错

该脚本依赖需要安装sshpass

[root@m01 scripts]# rpm -qa sshpass

sshpass-1.06-1.el6.x86_64

部署完毕后要检查:

[root@m01 scripts]# ssh 172.16.1.8 hostname

web02

批量检查脚本:

 1 #!/bin/bash
 2 #ssh 172.16.1.41 free -m
 3 #ssh 172.16.1.31 free -m
 4 #批量测试的脚本更新版本
 5 CMD="$1"
 6 for ip in 31 41
 7 do
 8     echo "========>INFO 172.16.1.$ip<======="
 9     ssh 172.16.1.$ip "$CMD"
10     echo "========>INFO end<========="
11     echo ""
12 done
View Code  

执行结果:

[root@m01 scripts]# sh batch_manger1.sh "hostname"

========>INFO 172.16.1.31<=======

nfs01

========>INFO end<=========

========>INFO 172.16.1.41<=======

ssh: connect to host 172.16.1.41 port 22: Connection timed out

========>INFO end<=========

========>INFO 172.16.1.8<=======

web02

========>INFO end<=========

猜你喜欢

转载自www.cnblogs.com/nodchen/p/9132755.html