之前有过一篇博文关于 多个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是由芬兰的一家公司开发的。但是因为受ag真人试玩娱乐的版权和加密算法的限制,现在很多人都转而使用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 的区别