最近一直在学习客户端服务器之类的题问,今天正好有机会和大家共享一下.
在linux上任务,ssh是必须要懂得的技巧方法。它可以立建起多台主机之间的安全的加密输传,以停止近程的问访、操控、输传据数。
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钥密的一另套加密方法)。
$ 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 + + . |
| . . |
+-----------------+
结果是在~/.ssh/下生成了 id_rsa(私钥)和id_rsa.pub(钥公)
- 3.将客户端的钥公id_rsa.pub传递给服务器
传送id_rsa.pub到服务器上,并将其内容写入到~/.ssh/authorized_keys件文尾。
可以物理的用U盘转运(乎似更安全),也可以用使scp指令(这个时候就须要用运到令口验证的ssh方法)
闷热的天,蝉儿耐不住寂寞地不停在鸣叫,我孤单一人,寂静的身旁没有一个知音,想疯狂地听摇滚乐,听歇斯底里的歌声,那只为逃避无人的天下里那浓烈的孤单气息。一个人是清冷,两个人便是精彩,于是,莫名的冲动让我格外想念旧日的好友,怀念过去的日子,尽管不够现实的遐想追回不了曾经一切,但却希望思绪可以飞扬于闭上双目后的天下中,印有微笑,印有舞动的身姿,翩翩起舞……
$scp ~/.ssh/id_rsa.pub user@host:~/.ssh/tmp_id_rsa.pub
$ssh user@host "cat ~./ssh/tmp_id_rsa.pub >> ~/.ssh/authorized_keys"
在行执scp输传的进程当中,如果是第一次ssh连接到服务器,客户端会示提是不是信任这个主机,比如: $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)? 原因是,客户端不确定所连接的host是不是是真正的host。一般情况,直接输入yes,继承就好了。这里有较细详的解释:点击连接
然后就可以免密码、更安全的登录啦 ssh xxxx@hostAddress
在ssh登录服务器时,如果涌现如下题问:Agent admitted failure to sign using the key则须要手工将客户端私钥加入到ssh管理体制中。用使 ssh-add 指令。(细详机理还不太清晰) $ssh-add ~/.ssh/id_rsa
and one more thing;)
ssh+firefox+autoproy
看看wall面外的天下,是如许美妙的情事。ssh能帮我们做到,只要有一台在wall外的主机做代理。 细详方法见参博文:ssh+firefox-autoproxy
SCP命令加密值赋据数
#将地本件文复制到近程主机上
$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配置 详解
文章结束给大家分享下程序员的一些笑话语录: 马云喜欢把自己包装成教主,张朝阳喜欢把自己包装成明星,李彦宏喜欢把自己包装成的很知性,丁磊喜欢把自己包装的有创意,李开复总摆出一副叫兽的样子。看来的。其实我想说,缺啥补啥,人之常情。