SSH远程管理服务


作者Georgekai

归档:学习笔记

2018/1/29

SSH远程管理服务

1.1 SSH服务介绍说明

Secure shell protocol——安全的shell协议

SSH:先对要传输的数据包进行加密处理,然后在进行数据传输,确保了数据的安全

telnet:用于远程连接控制,但不对数据传输进行加密

1.1.1 SSH服务主要提供的两个功能:

1. 远程连接

2. 远程文件传输:如sftp

1.1.2 SSH连接排错思路

1. ping 172.16.1.41

traceroute 172.16.1.1.41 #路由追踪

2.关闭防火墙和SElinux

临时关闭:service iptables stop setenforce 0

永久关闭:chkconfig iptables off

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux

3.测试SSH服务是否开启:

1. nmap 172.16.1.41 -p 22

2. telnet 172.16.1.41 22 #标准退出方式telnet连接,按ctrl+],输入quit

3. lsof -i:22

4. nc 172.16.1.41:22

5. ss 172.16.1.41 22

PS:1. 不要用iptables -nL检查iptables状态,因检查完会默认开启

2. /etc/services  #存放服务与其对应的端口号,只有在这里存放的服务才能被启动

否则,就算启动了,端口号也不在监听状态(相当于没启动)

1.2 远程管理服务说明

1.2.1 telnet远程管理

1. 安装telnet软件服务

yum install -y telnet telnet-server

2. 配置telnet服务可以被xinetd服务管理

vim /etc/xinetd.d/telnet

disable = no

3. 启动xinetd服务

/etc/init.d/xinetd start

netstat -lnptu |grep 23 #检查服务是否开启,这时候服务名不叫telnet了,叫xineted

1.2.2 使用wireshark抓包来实现SSH远程协议进行数据的加密,telnet远程协议未对数据包加密

1. 分析telnet包的数据是明文传输的

1).windows中安装wireshark,选择vmnet 8 网卡

2).抓取telnet包,分析数据不是加密的

3)根据协议过滤出tenet包

4)确认源和目的地址,选择一个telnet包,右击选择追踪流

2. 使用wireshark抓取三次握手和四次挥手包

1)用ssh从本地shell登录进去,exit退出登录

2) 过滤tcp包,进行分析,步骤同上类似

三次握手:

四次挥手:

1.2.3 . linux中使用命令方式抓包

tcpdump -i eth0 -nn -c 5 "port 22" -w /tmp/data.pkg

PS:-i      #指定抓取哪一个网卡上产生的数据包流量

-nn      #根据端口号转换为服务名

-c       #指定抓包数量

"port 22"    #抓取指定端口号的数据包

-w       #将抓取的数据包内容保存到指定文件中,便于发给其他人

-r       #对保存的数据包文件进行读取(否则不能读取)

1.2.4 SSH要点总结

1.3 linux系统中主要的两个数据加密软件(openssh、openssl)

1.3.1 openssh

服务端

/etc/rc.d/init.d/sshd        --- ssh服务端启动脚本命令

/etc/ssh/sshd_config         --- ssh服务端配置文件

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

客户端

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

/usr/bin/.ssh.hmac          --- ssh服务的算法文件

/usr/bin/scp                --- 基于ssh协议,实现远程拷贝数据命令

/usr/bin/sftp               --- 基于ssh协议,实现数据传输命令

/usr/bin/slogin              --- 远程登录主机连接命令

/usr/bin/ssh                --- 远程登录主机连接命令

/usr/bin/ssh-add             --- 此参数必须和ssh-agent命令结合使用,将私钥信息注册到    代理服务中

/usr/bin/ssh-agent            --- 启动ssh认证代理服务命令

/usr/bin/ssh-copy-id         --- 远程分发公钥命令

/usr/bin/ssh-keyscan         --- 显示本地主机上默认的ssh公钥信息

1.3.2 openssl:(https)这个暂时不做解释

1.4 SSH协议实现加密技术的原理

1. 利用了公钥和私钥的认证机制,实现对数据的加密和解密

公钥:在网络中传输

私钥:保存在本地

2. 使用ssh-keyscan可根据IP查看对应主机的公钥

[[email protected] ~]# ssh-keyscan -t dsa 172.16.1.7

172.16.1.7 SSH-2.0-OpenSSH_5.3

172.16.1.7 ssh-dss AAAAB3NzaC1kc3MAAACBAP+E6feKhADKLR5/D/dh4BTn3I8l88wJhITxzNn/XwK88BvWhBPu5sceD9C7JPC47PpDyvG99kL48RaxdiKiaiMvNfoATwutVAUlyx8k/UYRDiQRxAlOnKPj0PFVzDutr6EJad+FNSS0X+av3lHvdJwHHAbo0BpQdGNtmTSgnuORAAAAFQD1ORmJdB+3B75ICTkpLYUKiK7clwAAAIEA1eqSq7QiLrvU9y07I0xrW9uIiFme8+Trgzd7dXJ5aGyRGUB/wJrqjmudtANRoAsmL/gT65oZw2I1AP0KbBqjlqU97Zzbfz7brkeEDdXgZ1yTW1u2vMtKlearlgIoUp0a5DZKZn6+/A5AQG6NvY7Xnu0FhNMirkMWBqZ32n/69WwAAACBAMQiVKjk5KvRGcGzIqErubzOKFj1zlWlgBPot/HoTCdFGfkodaHdqP5JkqEOmrSBtJwNUEPjXOr+fNKL0/qL4FxChbXi4UAe9MixNhXTK7KyU7RsaXPb27d7Kw+34GAyw+VWQAr3DP/6j6S0xGtgv0anHvKzYwq4ZWanVs7xAha5

PS:-t :指定加密类型(默认为rsa)

3. 私钥和公钥的存储位置

[[email protected] ~]# ls /etc/ssh

moduli           ssh_host_dsa_key      ssh_host_rsa_key

ssh_config       ssh_host_dsa_key.pub  ssh_host_rsa_key.pub

sshd_config      ssh_host_key

sshd_config.bak  ssh_host_key.pub

PS:1.ssh_host_key就是私钥(里面都是乱码)

2.后面带.pub的文件就是公钥(如:ssh_hosts_pub)

4. 分析执行ssh 10.0.0.31时,下图的含义

客户机执行ssh 10.0.0.31连接服务端时,服务端询问客户端是否要连接我,客户端确认连接后,需要输入服务端的密码,服务端确认正确后,连接连接。

1.4.1 SSH V1和V2版本的区别

1. V1版本钥匙和锁头默认不会变化,数据传输不安全

2. V2版本钥匙和锁头会经常变化,数据传输更安全

1.4.2  SSH服务认证类型

1. 基于密码的认证

2. 基于秘钥的认证、安全 (实现免密码管理)(重点

1.4.3 基于秘钥管理的认证全过程:(实现免密码管理)

①. 在管理端创建出秘钥对(创建两个信物)

②. 管理端将公钥(锁头)传输给被管理端,锁头传输给被管理端要基于密码方式认证

③. 管理端向被管理端发出建立连接请求

④. 被管理端发出公钥质询

⑤. 管理端利用私钥解密公钥,进行公钥质询响应

⑥. 被管理端接收到质询响应,确认基于秘钥认证成功

下图:客户端为管理端,服务端为被管理端

1.4.4 基于秘钥认证部署过程(免密码方式登录的过程)

1. 客户端上创建秘钥对

1) [[email protected] ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):    ---确认私钥保存路径(默认路径)

Enter passphrase (empty for no passphrase):             ---确认私钥文件是否设置密码(设 置为空)

Enter same passphrase again:                       ---确认私钥文件是否设置密码 (设置 为空)

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:

fc:7d:bd:64:62:d1:95:03:ca:c2:7f:71:d0:70:7e:1c [email protected]

The key's randomart image is:

+--[ RSA 2048]----+

|               oE|

|         .     ..|

2) 创建完后,会在当前用户的宿主目录.ssh/下生成一个公钥与私钥

[[email protected] ~]# ls .ssh/

id_rsa  id_rsa.pub  known_hosts

2.  分发公钥给服务端主机

1)[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]

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

PS:1. -i   #指定要进行分发的公钥文件

2. root表示客户端以什么样的身份登录到服务端

2)在服务端查看宿主目录.ssh/下,发现多了authorized_keys这个公钥文件

[[email protected] ~]# ls .ssh/

authorized_keys  known_hosts

3. 利用基于秘钥方式登录

[[email protected] ~]# ssh 172.16.1.31 ——直接可以登录,不需要密码了

Last login: Mon Jan 29 16:31:35 2018 from 172.16.1.41

Either to be the first or to be the best one !

1.4.5 如何实现多台主机之间彼此相互访问,都是基于秘钥的

首先:管理服务器将公钥分别发布给web1、web2

1.创建秘钥对 ssh-keygen -t rsa

2.将公钥发布到web1 ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

3.将公钥发布到web2 ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

第一步:启动认证代理服务

[[email protected] ~]# eval `ssh-agent -s`

Agent pid 2278

PS:eval这个命令,相当于执行俩次bash

第二步:向agent代理服务器注册本地服务器私钥信息

[[email protected] ~]# ssh-add

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

第三步:将注册凭证信息通过远程登录方式给被管理主机

[[email protected] ~]# ssh -A 172.16.1.31

Last login: Mon Jan 29 16:35:28 2018 from 172.16.1.41

Either to be the first or to be the best one !

PS:1.注册凭证不是私钥信息

2.被管理主机接受到后,会产生凭证信息/tmp/ssh-xxx/agent.12334

1.5 企业面试题:

1.5.1 如果给你一个进程名(如:ssh),如何查看对应的端口是什么?

netstat -lnptu |grep sshd

ss -lnptu |grep sshd

1.5.2 取出sshd端口号22

[[email protected] ~]# netstat -lnptu |awk -F "[ :]+" '$4~/^22/{print $4}'

[[email protected] ~]# netstat -lnptu |awk -F "[ :]+" '!/:::/&& /sshd/{print $5}'

[[email protected] ~]# netstat -lnptu |awk -F "[ :]+" '$5~/22/{print $5}'

1.5.3 给你一个端口,如何命令行查出对应的服务是什么?

nmap -p 22 172.16.1.41

netstat -lnptu |grep 22

ss -lnptu |grep 22

lsof -i:22

nc 172.16.1.41 22

1.6 SSH配置文件一些重要参数说明

vim /etc/ssh/sshd_config

13 (行号)#Port 22                                        --- 表示修改默认端口号信息

15 (行号)#ListenAddress 172.16.1.41        --- 指定监听本地主机网卡地址信息

UseDNS no                   --- 默认此参数配置信息为yes,要对访问过来主机信   息做dns反向解析

GSSAPIAuthentication no          --- 默认此参数配置信息为yes,不对连接进行GSSAPI   认证

permitRootLogin no          --- 禁止root登录,默认为yes允许

permitEmptyPasswords no        --- 禁止空密码登录

PasswordAuthentication yes      --- 密码验证登录

扩展说明:sshd服务主要的两个进程

/usr/sbin/sshd           ---  此进程对客户端第一次连接ssh服务端有影响

sshd: [email protected]/0          ---  一旦ssh连接成功,是否可以始终保持连接由此进程决定

1.7 SSH入侵案例说明

1.7.1 如何防止SSH登录入侵小结

1)用秘钥登录,不用密码登录

2)牤牛阵法,解决SSH安全问题

a. 防火墙关闭SSH,指定源IP限制(局域网,信任公网)

b.(负载均衡服务器)开启SSH只监听内网IP

3)尽量不给服务器外网IP

4)最小化(软件安装授权)

5)给系统重要文件或命令做指纹

6)给重要配置文件加锁chattr -i / -a

原文地址:http://blog.51cto.com/13055758/2066539

时间: 2024-10-12 06:20:14

SSH远程管理服务的相关文章

Linux(11):期中架构(3)--- SSH远程管理服务 & ansible 批量管理服务

SSH远程管理服务 1. 远程管理服务知识介绍 # 1.1 SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Working Group)制定: 在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输.确保了传递的数据安全. SSH是专为远程登录会话和其他网络服务提供的安全性协议. 利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中, 绝大多数企业普遍

SSH远程管理服务实战

目录 SSH远程管理服务实战 1.SSH基本概述 2.SSH相关命令 3.Xshell连接不上虚拟机 4.scp命令 5.sftp命令 6.SSH验证方式 7.SSH场景实践 8.SH安全优化 9.交互expect[扩展] 10.免交互sshpass[扩展] SSH远程管理服务实战 1.SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务2.对传输的数据进行加密 那么

ssh远程管理服务配置

##sshd远程连接的优化 版主QQ:2559721591    资料网站:http://rshare.ys168.com 网络环境: ssh服务器(虚拟机):192.168.10.25 ssh客户机(物理机):192.168.10.1 ssh:是安全的外壳的缩写(Secure Shell).是专门为远程登录会话和其他网络服务提供安全性的协议. linux的ssh远程登录软件:openssh,默认端口是22. 显示远程连接过程:ssh  -v  [email protected] #软件安装 y

linux运维、架构之路-SSH远程管理服务

1.SSH服务功能介绍 1.远程登录管理 提供类似telnet远程联机服务器的服务,即上面提到的SSH服务: 2.远程传输文件 是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务(vsftp,proftp) 3.ssh服务连接工具 CRT.xshell.vnc支持远程连接图形化界面.xmanger支持远程连接图形化界面(配置简单) 2.SSH远程服务特点 1.ssh服务端口信息为22 2.ssh采用密文方式传输数据 3.ssh服务默认支持root用户进

6. SSH远程管理服务实战

1. SSH基本概念? ssh是一个应用层安全协议 2.SSH主要的功能是? 实现远程登录, 数据传输过程中进行加密. 钉钉(澡堂模式) 远程登录: ssh telnet 3.SSH与Telnet之间有什么区别? 服务连接方式 服务数据传输 服务监听端口 服务登陆用户 ssh 加密 22/tcp 默认支持root用户登陆 telnet 明文 23/tcp 不支持root用户登陆 4.抓包分析SSH与Telnet的区别? 所需工具:Wireshark [[email protected] ~]#

SSH远程管理、参数讲解、xshell使用、scp,sftp,ssh命令(ssh两种方式的密钥验证方

1.SSH远程管理 SSH(Secure Sheel)是一种安全通道协议,主要用于实现字符界面的远程登录.远程复制等功能.SSH协议对通信双方的数据传输进行了加密处理,其中包括用户的口令.与早期的TELNET(远程登录,tcp23端口).RSH(Remote Sheel,远程执行命令).RCP(Remote File Copy,远程文件复制)等应用想必,SSH协议提供了更好的安全性. 配置OpenSSH服务端(由openssh.openssh-server软件包提供.主配置文件/etc/ssh/

Linux服务器ssh远程管理

SSH远程管理 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登陆,远程复制等功能.SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆时输入的用户口令,与早期的telnet(远程管理),rsh(Remote Shell ,远程执行命令),rcp(远程复制文件)等应用相比,SSH协议提供了更好的安全性. 配置OpenSSH服务端 在RHEL 5系统中,OpenSSH服务器由openssh,openssh-server等软件包提供(默认已安装),并已将s

Linux SSH远程管理故障如何排查?

Linux SSH远程管理故障如何排查? SSH远程管理故障排查方案: 1.检测两个机器是否畅通 两个机器之间是否畅通,查看物理链路是否有问题(网线网卡.IP是否正确) 第1步:物理链路是否畅通,比喻为"高速公路是否畅通" ping 排查客户端到服务端的线路问题,ping是常用的网络连通性检查工具 tracert -d 路由追踪命令,-d是不进行反向解析 C:\Users\Administrator>ping 10.0.0.8 正在Ping 10.0.0.8 具有32 字节的数据

Linux SSH端口更改和SSH远程连接服务慢原因排查

Linux SSH端口更改和优化 为什么需要更改SSH默认连接端口 Windows服务器的默认远程管理端口是3389,Linux服务器的默认端口是22.如果在公网上,经常会被工具扫,这是不安全的,为了系统安全,需要更改默认的配置. Linux 6 操作过程 更改配置文件 # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori 更改配置前备份 # vi /etc/ssh/sshd_config 编辑sshd_config ####添加如下内容####