SSH原理和使用
ssh 是什么
在 linux 上工作,ssh 是必须要了解的技术方法。它可以建立起多台主机之间的安全的加密传输,以进行远程的访问、操控、传输数据。
SSH 為 Secure Shell 的縮寫。為建立在应用层和传输层基础上的安全协议。
传统的网络服务程序,如 FTP、POP 和 Telnet 其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。
而 SSH 是目前较可靠,專为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。透過 SSH 可以對所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗。
SSH 之另一項優點為其传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,它既可以代替 Telnet,又可以为 FTP、POP、甚至为 PPP 提供一个安全的「通道」。
了解这么多就好了,其实 ssh 连接也就是可以理解成经过加密的远程访问啦。
—(来自中文维基)
ssh 连接的验证、加密方式
ssh 连接是 CS 模型(客户端-服务器),客户端发出连接申请,服务器对客户端进行验证,再考虑是否接受连接申请。
ssh 的安全加密方式的理论基础是非对称加密体系。而非对称加密中,常见的一种就是 RSA 加密算法。在使用 ssh,务必先弄清楚非对称加密和 rsa 的算法流程。详情参见 RSA 加密算法。
ssh 有两种级别的安全验证:账户口令验证、rsa 加密验证。详细参数,可以在 sshd_config 配置文件中设置(Ubuntu 是/etc/ssh/sshd_config,mac 下是/etc/sshd_config)
账号口令验证
直接输入所要登陆的用户的口令是默认的方式。不需要修改配置文件。
如果直接从客户端将用户密码传输到服务器,那么密码信息很容易被中间人截获,从而实现重放攻击。ssh 的实现方式是:
- 1.客户端向 ssh 服务器发出请求,服务器将自己的公钥返回给客户端;
- 2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器;
- 3.服务器接收到客户端传送的密码,用自己的私钥解码,如果结果正确,则同意登录,建立起连接。
这种方式还是有漏洞的,中间人可以假扮成服务器,骗取客户端的密码。
RSA 加密验证
rsa 加密验证方式,充分利用了非对称加密体系的优势,不需要在网络传输密码,完全杜绝了中间人攻击的可能。步骤如下:
准备工作
- -1.客户端先使用 ssh-keygen 命令,生成私钥和公钥。按照默认配置,私钥会被保存在~/.ssh/id_rsa 中,公钥则在~/.ssh/id_rsa.pub 中。(一般别修改这里的文件)
- 0.客户端通过安全的方式将公钥发送给服务器。在服务器端,将客户端发的公钥写入到~/.ssh/authorized_keys 文件末尾。
建立连接
- 1.客户端发出申请。服务器产生 session 密钥对,返回通过对应客户端的公钥加密后的 session 公钥。
- 2.客户端用自己的密钥解密信息,得到 session 公钥。
- 3.之后的数据交互,都通过对方方公钥加密,对方收到信息后,用其私钥解密,实现安全加密过程。
免密码的 RSA 加密方式实施过程
- 1.安装 ssh
mac 下自带的有,ubuntu 下直接 sudo apt-get install ssh。
- 2.在客户端生成私钥公钥
使用 ssh-keygen 命令生成密钥对。遇到提示都直接回车(其中 passphrase 是保护 rsa 密钥的另一套加密方式)。
1 |
|
结果是在~/.ssh/下生成了 id_rsa(私钥)和 id_rsa.pub(公钥)
- 3.将客户端的公钥 id_rsa.pub 传递给服务器
传送 id_rsa.pub 到服务器上,并将其内容写入到~/.ssh/authorized_keys 文件尾。
可以物理的用 U 盘转运(似乎更安全),也可以使用 scp 指令(这个时候就需要运用到口令验证的 ssh 方式)
1 |
|
在执行 scp 传输的过程中,如果是第一次 ssh 连接到服务器,客户端会提示是否信任这个主机,比如:
1 |
|
原因是,客户端不确定所连接的 host 是否是真正的 host。一般情况,直接输入 yes,继续就好了。这里有较详细的解释:点击连接
然后就可以免密码、更安全的登录啦
1 |
|
在 ssh 登录服务器时,如果出现如下问题:Agent admitted failure to sign using the key 则需要手工将客户端私钥加入到 ssh 管理体系中。使用 ssh-add 指令。(具体机理还不太清楚)
1 |
|
and one more thing;)
ssh+firefox+autoproy
看看 wall 外面的世界,是多么美好的事情。ssh 能帮我们做到,只要有一台在 wall 外的主机做代理。
具体方式参见博文:ssh+firefox-autoproxy
SCP 命令加密赋值数据
1 |
|
SSH 的配置
具体参数细节参见博文:SSH 安全性和配置入门
sshd_config 配置 详解
推荐阅读:
SSH原理和使用的更多相关文章
- SSH原理与运用
SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...
- SSH原理与运用(二):远程操作与端口转发
SSH原理与运用(二):远程操作与端口转发 作者:阮一峰 (Image credit: Tony Narlock) 七.远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一 ...
- SSH原理与运用(一)和(二):远程登录 RSA算法原理(一)和(二)
SSH原理与运用(一)和(二):远程登录 RSA算法原理(一)和(二) http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html ht ...
- SSH原理与运用一:远程登录(转)
原文:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 作者: 阮一峰 SSH是每一台Linux电脑的标准配置. 随着Linux ...
- ssh原理[转]
SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...
- Hadoop第一式:配置Linux环境之免密配置及SSH原理
一.配置SSH免密登录 进入/.ssh目录,执行密钥生成指令 ssh-keygen -t rsa (rsa为默认加密格式) 然后会出现四个提示,让你选择密钥保存路径.指纹.拍照啥的,不用管它直接回车过 ...
- ssh原理图解
SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式.在此之前,远程登录一般常用FTP和Telnet,但是它们以明文的形式在网络中传输账 ...
- 图解SSH原理及两种登录方法
SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密. 传统的对称加密使用的是一套秘钥,数据的加密以及解密用的都是这 ...
- SSH原理与运用(一):远程登录(转)
作者: 阮一峰 日期: 2011年12月21日 SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很 ...
- 图解SSH原理
1. 初见SSH SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务. SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案.使用范围最广泛的当然 ...
随机推荐
- LoadRunner--录制手机APP脚本
通过LR录制手机脚本的方式有三种: 1)通过安卓模拟器录制: 2)通过抓包录制: 3)通过代理方式录制: 本文使用第二种方式进行录制,首先需要先安装LoadRunner11测试工具,然后安装lr录制A ...
- Web自动化测试 Selenium+Eclipse+Junit+TestNG+Python
Selenium+Eclipse+Junit+TestNG+Python 第三步 下载Selenium IDE.SeleniumRC.IEDriverServer.SeleniumClient Dri ...
- equals、HashCode与实体类的设计
equals和HashCode都是用来去重的,即判断两个对象是否相等.如果是String类则我们直接用.equals()判断,如果是我们自己定义的类,需要有自己的判断方法,重写equals,如果是集合 ...
- 怎样用Adobe Acrobat 7 Pro把PDF文档拆分成多个啊?
这个pdf文档里有多篇文章,我想把他们分开并分别保存在独立的pdf文档.怎么操作?我的电脑基础不太好,麻烦说得详细一些. Adobe Acrobat 7 Pro拆分PDF文档的方法: 1.点左边的“书 ...
- squeeze() 函数——MATLAB
B=squeeze(A) 移除张量A的单一维,即返回和矩阵A元素相同,但所有单一维都移除的矩阵B,单一维是满足size(A,dim)=1的维. squeeze命令对二维数组是不起作用的; 如果A是一行 ...
- CleanCode代码整洁之道培训总结(2015-03-14)
为期四天的CleanCode培训时间非常短.非常难准确掌握一些知识.但让我对代码有了一个又一次的认识和启示:之前也有看过设计模式.重构之类的书,看完之后也有一些感触,过后在写代码中还是不能应用进来,事 ...
- 【note】缩写词
CoE CANopen EtherCAT应用程序概要文件CANopen™是一个注冊商标的能够自己主动化汽车集团..纽伦堡.德国CiA402CANopen™驱动器配置文件里指定的IEC 61800-7- ...
- php课程 3-12 带默认参数的函数怎么写
php课程 3-12 带默认参数的函数怎么写 一.总结 一句话总结:多看学习视频啊 1.带默认参数的函数怎么写? 直接等于号接默认参数,和js里面一模一样 2.带默认参数的函数的注意事项是什么? 默认 ...
- 【计算机】基本概念的理解 —— 沙盒(sandbox)、交互式计算/编程/应用
web scraper:网络铲: scraper:n. 刮刀:铲土机:守财奴: 1. 交互式计算/编程/应用(interactive computing/application/programming ...
- 《SPA设计与架构》之客户端路由
原文 简书原文:https://www.jianshu.com/p/4d83475f71da 大纲 1.传统路由 2.SPA导航 3.客户端路由器的工作机制 1.传统路由 在传统Web应用程序中,导航 ...