为其他网络服务提供安全协议。替代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 root@172.16.1.8

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.

root@172.16.1.8's password:

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

.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 root@172.16.1.8

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

[root@web02 ~]#

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

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

[root@m01 ~]# ssh root@172.16.1.8 "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 root@172.16.1.31当中

$1  表示的是root@172.16.1.31

修改后的语句为:ssh-copy-id -i /root/.ssh/id_dsa.pub "-p52113 root@172.16.1.31"

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   第一次分发公钥要输入密码

批量分发公钥脚本

 #!/bin/bash
\rm /root/.ssh/id_dsa*
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" &>/dev/null
#ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q ### 等价于上一种写法 -q安静的执行 不要输出
#分发密钥文件
for ip in
do
echo "==================================fenfa begin======================================="
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"
echo "==================================fenfa end========================================"
echo ""
done

密斗性

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

该脚本依赖需要安装sshpass

[root@m01 scripts]# rpm -qa sshpass

sshpass-1.06-1.el6.x86_64

部署完毕后要检查:

[root@m01 scripts]# ssh 172.16.1.8 hostname

web02

批量检查脚本:

 #!/bin/bash
#ssh 172.16.1.41 free -m
#ssh 172.16.1.31 free -m
#批量测试的脚本更新版本
CMD="$1"
for ip in
do
echo "========>INFO 172.16.1.$ip<======="
ssh 172.16..$ip "$CMD"
echo "========>INFO end<========="
echo ""
done

执行结果:

[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<=========

最新文章

  1. QT 数据库编程一
  2. 如何实现Android 中断线程的处理
  3. MySQL中用户授权/删除授权的方法
  4. YSPASYS 中小型企业简单员工评价考核系统
  5. Docker系列(四)Dockerfile
  6. JAXB--学习2
  7. c语言指针点滴1
  8. nginx install lua module
  9. /export/App/zz/phantomjs-1.9.7-linux-x86_64/bin
  10. Windows 8 应用开发 - 本地数据存储
  11. win7下sublime text3 安装Emmet的pyv8
  12. 开发Angular库的简单指导(译)
  13. Gradle、Gradle Wrapper与Android Plugin for Gradle
  14. Python学习---字符串处理
  15. 我的第二个独立开发的邮箱类App—“简邮”(支持QQ、雅虎、阿里云、Outlook)
  16. NGUI实现滑动屏幕的时候,进行环形旋转
  17. IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
  18. 找bug hhh
  19. OKHttpUtil工具类
  20. iOS - iphoneX系列 - 全局配置的基本信息

热门文章

  1. DevExpress v17.2新版亮点—WPF篇(二)
  2. Crystal Report Error: Either the Crystal Reports registy key permission are insufficient or the Crystal Reports runtime is not installed correctly
  3. windowns 下备份mysql数据库
  4. oracle function用法(本文来自百度文库)
  5. HDU 4862
  6. 7.3 5种IO模型与IO复用
  7. Docker教程-01.安装docker-ce-18.06
  8. ubuntu16.04 中文输入法
  9. Unity3D游戏-愤怒的小鸟游戏源码和教程(二)
  10. 动画Completed事件里获取执行该动画的UI对象