ssh-agent 与 ssh 的区别


之前有过一篇博文关于 多个ssh key 在同一台电脑上如何管理使用

其实哪一篇并不完善.所以想专门再开博客来了解下有关 ssh 和 ssh-agent 的一些知识点.


ssh-agent 是什么:

出自:ssh-agent 与 ssh 的区别 (9月10日更新)

它是linux 系统上的一个程序,这个程序可以控制和保存公钥身份验证所使用的私钥程序,听起来好拗口.


当 ssh-add 把私钥交给 ssh-agent 来管理时,其他程序需要身份验证的时候都可以申请交给 ssh-agent 来完成整个认证过程.


所以,到这里我们应该大体了解 ssh-agent : 它就是一个帮助我们验证身份的程序.


如何使用


语法:

ssh-agent [-c | -s] [-d] [-a bind_address] [-t life] [command [arg ...]] 
ssh-agent [-c | -s] -k

参数:

-a bind_address:bind the agent to the UNIX-domain socket bind_address. 
-c:生成C-shell风格的命令输出。 -d:调试模式。 
-k:把ssh-agent进程杀掉。 
-s:生成Bourne shell 风格的命令输出。 
-t life:设置默认值添加到代理人的身份最大寿命。


你可以不用上门的可选参数:

➜  /Users/zhangzhi/code/new_portal git:(dev) >ssh-agent bash

这样直接运行 ssh-agent


然后运行 ssh-add  把键值添加的 ssh-agent 代理中

➜  /Users/zhangzhi/code/new_portal git:(dev) >ssh-add ~/.ssh/id_rsa

这样你的公钥就常驻 ssh-agent 堆栈中,当遇到验证身份的时候,它都会挺身而出.

比如:

这时你使用 git 指令拉取,push 代码时,都不再提醒你输入密码了.



SSH 是什么


比如我们传统与服务器连接的非 ssh 方式,这些服务程序的安全验证方式有弱点,就是很容易受到“中间人”这种方式的攻击。


SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”(man-in-the-middle)这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。


还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。 


最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。 


SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。 


SSH2对SSH1的程序码做了大幅度的改写,根据SSH公司的说法, 

SSH2有98%的程序码和SSH1的不一样。

除了SSH1所提供的RSA法之外,SSH2也提供了另外的公开金匙编码法以及金匙交换法,

 SSH2预设采用DSA编码以及Diffie-Hellman金匙交换法。

此外,更提供了SFTP,使我们能在FTP方面也得到安全的保障。


语法:

ssh -l [your accountname on the remote host] [address of the remote host]

如:

➜  /Users/zhangzhi/code/new_portal git:(dev) >ssh root@youHost


如果OpenSSH工作正常,你会看到下面的提示信息: 


The authenticity of host [hostname] can't be established. 

Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52. 

Are you sure you want to continue connecting (yes/no)? 


OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。 


然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。 

出自:ssh-agent 与 ssh 的区别




回到顶部