ssh服务简介及应用与服务的进程的类型
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服务简介及应用与服务的进程的类型的更多相关文章
- J2EE基础之Web服务简介
J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...
- HTTP的REST服务简介
REST简介 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么, ...
- Spring Cloud与微服务构建:微服务简介
Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...
- SpringCloud微服务简介(一)
Spring Cloud简单认识 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过 ...
- NFS服务简介
NFS服务简介 NFS是Network File System的缩写,即网络文件系统.NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件.NFS serve ...
- linux Xinetd服务简介
http://www.chuanke.com/course/72351180839190528______.html 1.什么是xinetdextended internet daemonxinetd ...
- 1、Spring Cloud - 微服务简介
前言: 业界大牛马丁.福勒(Martin Fowler) 这样描述微服务: 论文网址:https://martinfowler.com/articles/microservices.html 就目前而 ...
- linux 服务简介
Linux服务(Linux services)对于每个应用Linux的用户来说都很重要.关闭不需要的服务,可以让Linux运行的更高效,但并不是所有的Linux服务都可以关闭.今天安装了一次CentO ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
随机推荐
- SQL :“传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确” 错误
其中在DAL层调用存储过程来插入数据的参数 SqlParameter[] parameters = { new S ...
- Linux之正则表达式2之()、[]、{}区别
正则表达式的() [] {} 有着不同的意思. () 是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串 (\s*)表示连续空格的字符串 [] 是定义匹配的字符范围.比如[a-zA-Z ...
- Redis类的源码使用
$redis = new Redis(); //连接redis服务器 $redis->connect('127.0.0.1', '6379'); $key = "key"; ...
- redhat 开课啦
今天是三八女神节. 终于开课啦,为考取RHCE准备.
- [转]Windows 经验集
Windows Server 2012 R2 显示 这台电脑 图标方法: 来自:https://jingyan.baidu.com/article/f25ef2544f6883482c1b82e5.h ...
- no module named win32api
1 首先下载pywin32 https://sourceforge.net/projects/pywin32/files/pywin32/ 2进入虚拟环境 D:\env\jdscrapy\Lib\si ...
- NPOI 导出Excel部分
) { MessageBox.Show("没有找到相关的数据!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.I ...
- ionic2 vscode运行调试
一.环境搭建 1,安装ripple模拟器 如果已经注册了淘宝国内镜像使用下面命令 cnpm install -g ripple-emulator 显示结果如下: 2,安装vs code 下载地址htt ...
- 适用于nodercms的打包构建脚本
背景 最近自己用nodercms搭建了一个简单的博客系统,用户发布一些自己谁便谢谢的文章.感谢nodercms团队,这个cms轻量易用,用于做个人博客太方便了.开发了博客系统,肯定设计到部署到AWS或 ...
- C#调用VisionPro工程文件
添加一个按钮与控件,双击按钮,在程序中写下一下代码, CogJobManager mymanger = (CogJobManager)CogSerializer.LoadObjectFromFile( ...