SSH ,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。

默认端口号:22

客户端:openssh-client     服务端:openssh(linux系统默认客户端,服务端都安装了

dropbear:非开源版的ssh

ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接

ssh的功能

1.远程登录
2.文件传输
3.功能共享
(都是加密实现)

两个认证
     客户端验证服务器端
     服务器端对客户端的做验证

ssh独立守护进程服务(以centos6为例)
# service sshd start|stop|restart|status
# chkconfig sshd on

客户端在收到服务器段的公钥之后,会生成一个密钥对,然后基于这个密钥实现安全传输
1. 当服务器端启动了ssh,那么就会自动生成一个密钥对
2. 当服务器端收到用户连接请求,那么就将公钥文件发送给客户端
3. 客户端将收到的公钥文件保存 ~/.ssh/known_hosts
下次登录时候,如果有目标主机的公钥文件,那么就是对于目标服务器的认证完成
下次登录时候,如果有目标主机的公钥不存在文件或者信息有误,那么就是对目标服务器的认证失败
4. 客户端保存了服务器端公钥文件后,会立刻产生一个私钥文件,构成一个密钥对,然后用公钥文件加密密钥对,然后将加密的数据传递到服务器端。服务器端解密以后,也就有了这样的一个密钥对。
5. 双方基于这个密钥对来通信

ssh基于c/s架构
客户端:
linux下客户端:ssh,配置文件:/etc/ssh/ssh_config

服务器端;
名称:sshd,配置文件:/etc/ssh/sshd_config

linux下ssh客户端的使用方法

格式

ssh [-p port] [user@]host [command]

服务器段的配置文件(常用配置)
Port 22 指定sshd服务所监听的端口
ListenAddress 0.0.0.0 指定sshd服务所监听的IP
UseDNS yes|no 指定是否将主机名称做解析
PermitRootLogin yes|no 指定是否运行root登录系统

基于密钥方式登录系统

1. 在用户的家目录中提前准备密钥文件(公钥)
2. 登录的时候,客户端会将公钥文件发送给服务器端,然后服务器会做比对两个公钥,如果比对成功,会向客户端发送一个质询(该质询是用传输密钥对中的公钥加密)
3. 客户度收到这个质询之后,会进行解密,然后将解密的结果发送给服务器端

案例:实现密钥方式登录系统
规划
server:10.220.5.63
client:10.220.5.67

1.在客户端器端创建一个密钥对

-t rsa 指定加密算法

[root@67 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <<<密钥对的保存位置
/root/.ssh/id_rsa already exists.
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:
SHA256:iOndEAzGN3gx6OW8NtxoqRQ5oXEqtfb7besGUqKfpDc root@67managerslave
The key's randomart image is:
+---[RSA ]----+
| .ooo. |
| o.*o=. |
| . B Oo. |
|. = *o+o |
| o oo*o=S |
| ..=.Xo. |
| =.B.o. |
| . E .o |
| . o.++. |
+----[SHA256]-----+

2.查看秘钥对

id_rsa       私钥文件

id_rsa.pub   公钥文件

[root@67 ~]# ls /root/.ssh
id_rsa id_rsa.pub

3.传送公钥到服务器端主机

[root@ ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.220.5.63
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.220.5.63'

Number of key(s) added:
Now try logging into the machine, with: "ssh 'root@10.220.5.63'"
and check to make sure that only the key(s) you wanted were added.

说明:
-i:指定要传输的密钥文件
root@10.220.5.63:指定传输到哪个主机上面
传递到目标主机之后,公钥文件会被重命名为authorized_keys,该文件的权限必须600

3.在客户端可以直接登录服务器端

[root@ ~]# ssh 10.220.5.63
Last failed login: Sun Nov :: CST from 10.220.5.67 on ssh:notty
There was failed login attempt since the last successful login.
Last login: Sun Nov :: from 10.220.5.70
[root@ ~]# <<<已登录

linux ssh客户端工具

ssh  作用:远程登录或者远程执行命令
   格式:ssh -p 端口 用户@主机 [命令]
scp   作用:传输文件
格式:
推送:scp /path/file user@host:/path
拉取:scp user@host:/path/file /path
选项
-P 端口:指定端口号
-r:递归传输一个目录及其内部的文件
-p:保留文件的属性不变
-v:显示传输过程信息
-l:限制传输速率

总结:实现给多个主机分发文件
1. 发送端需要有私钥文件
2. 所有的接收端需要有公钥文件
3. 所有节点都需要有相同的用户
4. 公钥文件和私钥文件必须有正确的权限

ssh登录缓慢
启用对主机名做反解
方式1:修改配置文件,禁止做反解 UseDns no
方式2:修改 /etc/hosts 添加一个主机名称的解析记录
方式3:ssh -v 查看登录过程信息,判断故障点

将一个文件传递到非用户家目录下,默认是没有权限,解决方式
1. 用root身份执行操作
2. 用suid
3. 分两步走,
第一步:先传递到目标主机的用户的家目录中
第二步:远程执行命令,将目标主机家目录中哪个文件移动到目标位置(依赖sudo)

案例:web1用scp将文件a.txt传递到web2的/root下(以tom身份来传输文件)
第一步:在web2上为tom做sudo授权
# visudo
tom ALL=() /bin/mv

第二步:在web1上执行scp,将a.txt传递到web2主机的/home/tom下
# scp a.txt tom@web2:/home/tom

第三步:在web1上执行ssh,将a.txt从tom家目录中移动到root下
# ssh -t tom@web2 sudo mv /home/tom/a.txt /root/

ssh相关的操作日志
/var/log/secure

生产环境中,实现文件批量分发方案有
1:基于ssh key+shell
优点:简单
缺点:节点数量几百台为宜
2:puppet
优点:功能强大、支持节点数量很多
缺点:操作复杂
3:saltstack
以上两者的折中方案
4:ftp/http+crotab
非主流方案

ssh服务简介及应用与服务的进程的类型的更多相关文章

  1. J2EE基础之Web服务简介

    J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...

  2. HTTP的REST服务简介

      REST简介   一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么, ...

  3. Spring Cloud与微服务构建:微服务简介

    Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...

  4. SpringCloud微服务简介(一)

    Spring Cloud简单认识 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过 ...

  5. NFS服务简介

    NFS服务简介 NFS是Network File System的缩写,即网络文件系统.NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件.NFS serve ...

  6. linux Xinetd服务简介

    http://www.chuanke.com/course/72351180839190528______.html 1.什么是xinetdextended internet daemonxinetd ...

  7. 1、Spring Cloud - 微服务简介

    前言: 业界大牛马丁.福勒(Martin Fowler) 这样描述微服务: 论文网址:https://martinfowler.com/articles/microservices.html 就目前而 ...

  8. linux 服务简介

    Linux服务(Linux services)对于每个应用Linux的用户来说都很重要.关闭不需要的服务,可以让Linux运行的更高效,但并不是所有的Linux服务都可以关闭.今天安装了一次CentO ...

  9. AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...

随机推荐

  1. ORA-00257: archiver error. Connect internal only, until freed……

    今天给客户测 试问题,让客户把数据发过来了.解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本 ...

  2. Spring3基础原理解析

    一.Spring3主要含义 Spring3是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 注:IOC的作用:对象依赖的其他对象通过被动的形式传递进来而不是这个对象常见或者查找依赖对象 ...

  3. HTML5 新的 Input 类型

    Input 类型: color(拾色器) color 类型用在input字段主要用于选取颜色,如下所示: 支持浏览器 实例 从拾色器中选择一个颜色: 选择你喜欢的颜色: <input type= ...

  4. 尝试 Markdown 写测试用例

    我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...

  5. MFC 使用Skin++ 美化皮肤

    查了好几天关于MFC应用程序换肤的资料,经过各种莫名其妙的问题的困扰,现分享一下自己的体会.希望可 以避免一些弯路.另外会在附上一些资源. 环境:Windows 7 + VS2012 + SkinSh ...

  6. 常用内置函数_eval_exce

    内置函数 abs 绝对值函数 res = abs(-19) print(res) round 四舍五入(n.5时, 奇数进偶数不进) sum 计算序列的和(元素是数字类型) listvar = (1, ...

  7. let const区别!

    这次做项目在申明变量的时候用到let const 总结下这两个区别 : 首先 let与const都是只在声明所在的块级作用域内有效. let声明的变量可以改变,值和类型都可以改变,没有限制.const ...

  8. java.lang.Boolean 类源码解析

    Boolean源码比较简单. public final class Boolean implements java.io.Serializable, Comparable<Boolean> ...

  9. Unity Post-Processing的一些分享

    讲些什么? 绝大多数的游戏或多或少都会使用些后处理效果. 早期版本中,Unity在提供的接口有限,优化空间不大,属于放任自流.官方推出了Post-Processing(下文简称PP)并在Github上 ...

  10. Java进程&线程(整理)

    Java进程&线程 程序:程序员写的代码,就是代码,不运行好像不会发生什么: 进程:一个进程可以理解为"运行的"一个程序,当我们启动一个java程序后,对应的jvm就会创建 ...