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

Linux 期中架构 SSH的更多相关文章

  1. Linux 期中架构 inotify

    全网备份数据同步方案 备份网站内部人员信息  不能解决外部(人员)上传数据的备份 定时任务最短执行的周期为一分钟,采用定时任务方式,有时可能造成一分钟内的数据丢失 因此对于重要数据需要采用实时同步的方 ...

  2. Linux 期中架构 rsync

    上篇 Rsync rysnc查看版本   --version 全量  与增量在效率上有区别 cp mv scp  --全量复制 rsync       --增量复制 rsync利用的是quick ch ...

  3. Linux 期中架构 Ansible

    ansible  自动化软件   基于Python开发 特点概述: 配置文件不需要过多配置  了解就可以了 ###部署ansble软件 ##受控主机部署 backup   nfs01   web01 ...

  4. Linux期中架构

    1    在构建完模板后  开启虚拟机后 需要再重启一次  以解决网卡不能看见的问题 ########################################add begin 2018-05 ...

  5. Linux 期中架构 PHP

    环境 PHP安装前准备  先将需要的软件包如下位置放置.另外需要有WWW用户   参照nginx 满足以上条件后执行安装脚本 PHP安装脚本: #!/bin/bash #install PHP #au ...

  6. Linux 期中架构 MySQL

     MySQL基础部分 mysql安装脚本 安装前请将相关安装包copy放到/server/tools目录下 -rw-r--r-- 1 root root 314149697 Mar 23  2017 ...

  7. Linux期中架构 全网备份案例

    server端脚本 #!/bin/bash #1 进行数据完整性验证 并生成结果 find /backup -type f -name "finger.txt"| xargs md ...

  8. linux 期中架构之 nginx 安装与排错

    1, 安装 nginx 所需要的pcre库 即:perl 兼容正则表达式 yum install pcre pcre-devel -y rpm -qa pcre pcre-devel 检查是否安装好p ...

  9. Linux运维就业技术指导(八):期中架构考核

    一,期中架构考核概述 1.1 架构图 1.2 架构图公司背景概述 公司是一个新兴的人脸识别高新创业公司,公司名称xxxx 老总是博士生导师,还有一个副总是研究生导师 副总同时是研发总监,负责所有的研发 ...

随机推荐

  1. oracle数据类型及其隐式转换

    oracle有三种最基本的数据类型,即字符型.数值型.日期型. oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数,如下: 1)to_char     ...

  2. Ubuntu下安装、卸载notepad++

    Ubuntu下的安装方法: sudo add-apt-repository ppa:notepadqq-team/notepadqq sudo apt-get update sudo apt-get ...

  3. SWIFT中正则表达式验证邮箱

    在playground内写入以下代码,正则关键字跟其它语言的没什么区别 class Regex { let internalExpression:NSRegularExpression let pat ...

  4. SWIFT模糊效果

    首先创建一个模糊效果 let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) 接着创建一个承载模糊效果的视图let blurView ...

  5. 搭建一个SVN

    1--------------------------------------首先需要下载SVN---------------------------------------------------- ...

  6. 3.1 shell简介、变量、运算符

    小知识: ipcs可以查看系统中创建的ipc进程间通信资源,例如信号量.共享内存等.示例如下: 什么是shell? shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程 ...

  7. Qemu编译qemu-system-arm

    /********************************************************************************* * Qemu编译qemu-syst ...

  8. UNIMRCP 代码走读

    基于UNIMRCP1.5.0的代码走读 与 填坑记录 1. server启动配置加载 入口:unimrcp_server.c static apt_bool_t unimrcp_server_load ...

  9. opencv-python教程学习系列9-程序性能检测及优化

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍程序性能检测及优化,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环 ...

  10. 在MNIST数据集,实现多个功能的tensorflow程序

    使用带指数衰减的学习率的设置.使用正则化来避免过拟合,使用滑动平均模型使得最终模型更加健壮. import tensorflow as tf from tensorflow.examples.tuto ...