SSH原理和使用
2013-08-29 11:52
204 查看
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.安装 sshmac 下自带的有,ubuntu 下直接 sudo apt-get install ssh。
2.在客户端生成私钥公钥
使用 ssh-keygen 命令生成密钥对。遇到提示都直接回车(其中 passphrase 是保护 rsa 密钥的另一套加密方式)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/biaobiaoqi/.ssh/id_rsa): /Users/biaobiaoqi/.ssh/id_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/biaobiaoqi/.ssh/id_rsa. Your public key has been saved in /Users/biaobiaoqi/.ssh/id_rsa.pub. The key fingerprint is: b7:c2:5c:3f:83:5e:5e:93:a4:42:db:51:d8:ac:07:66 biaobiaoqi@biaobiaoqi.local The key's randomart image is: +--[ RSA 2048]----+ | | | + | | E + | | o + | | S + o o | | o + * = . | | + = B + | | o + + . | | . . | +-----------------+ |
3.将客户端的公钥 id_rsa.pub 传递给服务器
传送 id_rsa.pub 到服务器上,并将其内容写入到~/.ssh/authorized_keys 文件尾。
可以物理的用 U 盘转运(似乎更安全),也可以使用 scp 指令(这个时候就需要运用到口令验证的 ssh 方式)
1 2 | $scp ~/.ssh/id_rsa.pub user@host:~/.ssh/tmp_id_rsa.pub $ssh user@host "cat ~./ssh/tmp_id_rsa.pub >> ~/.ssh/authorized_keys" |
1 23 | $scp ~/.ssh/id_rsa.pub user@host:~/.ssh/tmp_id_rsa.pub The authenticity of host XXX can't be established. ECDSA key fingerprint is xxxxxxxxxxxxxxxxxxxxxx. Are you sure you want to continue connecting (yes/no)? |
然后就可以免密码、更安全的登录啦
1 | ssh xxxx@hostAddress |
1 | $ssh-add ~/.ssh/id_rsa |
and one more thing;)
ssh+firefox+autoproy
看看 wall 外面的世界,是多么美好的事情。ssh 能帮我们做到,只要有一台在 wall 外的主机做代理。具体方式参见博文:ssh+firefox-autoproxy
SCP 命令加密赋值数据
1 23 | #将本地文件复制到远程主机上 $scp ~./tmp user@rehost:~/tmp #见远程主机上的文件复制到本地 $scp user@rehost:~/tmp ~./tmp #复制的是目录,需要迭代,添加-r 参数 $scp -r user@rehost:~/tmpDir ~./tmpDir |
SSH 的配置
具体参数细节参见博文:SSH 安全性和配置入门sshd_config 配置 详解
推荐阅读:
《linux ssh 使用深度解析(key 登录详解)》《使用 RSA 密钥对进行 SSH 登录验证》
《SSH 原理与运用(一):远程登录》
《SSH 原理与运用(二):远程操作与端口转发》
ssh+firefox-autoproxy
SSH 安全性和配置入门
sshd_config 配置 详解 原文地址:http://biaobiaoqi.github.com/blog/2013/04/19/use-ssh/
版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
相关文章推荐
- git使用ssh方式clone时候的,配置公钥和私钥的原理
- SSH之登陆原理以及使用
- [转]SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- SSH 使用原理 与解释
- SSH原理及应用---Struts2的工作机制及使用
- 20150920 加密和解密原理 Open SSL OPEN SSH使用
- 客户端服务器SSH原理和使用
- SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- ssh的原理及使用
- SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- SSH原理及应用---Spring的工作机制及使用
- SSH原理及应用---hibernate的原理及使用
- SSH原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- 【SSH】——hql的使用方式及实现原理
- Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的各种问题,以及实现hadoo
- JavaEE--SSH--structs2-拦截器(Interceptor)的原理及使用
- 详解linux系统下SSH原理与运用+rsync和scp使用
- SSH原理和使用
- ssh整合原理及其为什么使用
- SSH的原理及为什么使用