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 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的更多相关文章
- Linux 期中架构 inotify
全网备份数据同步方案 备份网站内部人员信息 不能解决外部(人员)上传数据的备份 定时任务最短执行的周期为一分钟,采用定时任务方式,有时可能造成一分钟内的数据丢失 因此对于重要数据需要采用实时同步的方 ...
- Linux 期中架构 rsync
上篇 Rsync rysnc查看版本 --version 全量 与增量在效率上有区别 cp mv scp --全量复制 rsync --增量复制 rsync利用的是quick ch ...
- Linux 期中架构 Ansible
ansible 自动化软件 基于Python开发 特点概述: 配置文件不需要过多配置 了解就可以了 ###部署ansble软件 ##受控主机部署 backup nfs01 web01 ...
- Linux期中架构
1 在构建完模板后 开启虚拟机后 需要再重启一次 以解决网卡不能看见的问题 ########################################add begin 2018-05 ...
- Linux 期中架构 PHP
环境 PHP安装前准备 先将需要的软件包如下位置放置.另外需要有WWW用户 参照nginx 满足以上条件后执行安装脚本 PHP安装脚本: #!/bin/bash #install PHP #au ...
- Linux 期中架构 MySQL
MySQL基础部分 mysql安装脚本 安装前请将相关安装包copy放到/server/tools目录下 -rw-r--r-- 1 root root 314149697 Mar 23 2017 ...
- Linux期中架构 全网备份案例
server端脚本 #!/bin/bash #1 进行数据完整性验证 并生成结果 find /backup -type f -name "finger.txt"| xargs md ...
- linux 期中架构之 nginx 安装与排错
1, 安装 nginx 所需要的pcre库 即:perl 兼容正则表达式 yum install pcre pcre-devel -y rpm -qa pcre pcre-devel 检查是否安装好p ...
- Linux运维就业技术指导(八):期中架构考核
一,期中架构考核概述 1.1 架构图 1.2 架构图公司背景概述 公司是一个新兴的人脸识别高新创业公司,公司名称xxxx 老总是博士生导师,还有一个副总是研究生导师 副总同时是研发总监,负责所有的研发 ...
随机推荐
- oracle数据类型及其隐式转换
oracle有三种最基本的数据类型,即字符型.数值型.日期型. oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数,如下: 1)to_char ...
- Ubuntu下安装、卸载notepad++
Ubuntu下的安装方法: sudo add-apt-repository ppa:notepadqq-team/notepadqq sudo apt-get update sudo apt-get ...
- SWIFT中正则表达式验证邮箱
在playground内写入以下代码,正则关键字跟其它语言的没什么区别 class Regex { let internalExpression:NSRegularExpression let pat ...
- SWIFT模糊效果
首先创建一个模糊效果 let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) 接着创建一个承载模糊效果的视图let blurView ...
- 搭建一个SVN
1--------------------------------------首先需要下载SVN---------------------------------------------------- ...
- 3.1 shell简介、变量、运算符
小知识: ipcs可以查看系统中创建的ipc进程间通信资源,例如信号量.共享内存等.示例如下: 什么是shell? shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程 ...
- Qemu编译qemu-system-arm
/********************************************************************************* * Qemu编译qemu-syst ...
- UNIMRCP 代码走读
基于UNIMRCP1.5.0的代码走读 与 填坑记录 1. server启动配置加载 入口:unimrcp_server.c static apt_bool_t unimrcp_server_load ...
- opencv-python教程学习系列9-程序性能检测及优化
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍程序性能检测及优化,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环 ...
- 在MNIST数据集,实现多个功能的tensorflow程序
使用带指数衰减的学习率的设置.使用正则化来避免过拟合,使用滑动平均模型使得最终模型更加健壮. import tensorflow as tf from tensorflow.examples.tuto ...