ssh是建立在应用层和传输层的安全协议,ssh协议可以防止计算机通信间的信息泄露问题。
在linux下常用的ssh协议就是ssh 命令,和scp命令,没有设置安全密匙的ssh、scp。是基于口令的安全验证,使用远程命令后要输入密码,虽然这是一种安全连接,但还是在网络中传输密码,如果经常在多个linux系统之间操作,重复输入密码有些不方便。
更加安全、高效的做法是设置一个安全密匙,就是建立一对安全密匙,公密和私密,把公密发给目的服务器上,目的服务器在每次收到客户端请求时会去比对你的密匙,如果公密一致,目的服务器就会用公密加密质询传输给客户端,客户端收到质询后就会用私密进行解密并把结果发给目的服务器,整个过程就不用在网络中传输密码,也不用重复输入密码。
我们现在来实现安全密匙,实验环境是两台linux主机
A IP:172.16.15.168
B IP:172.16.15.24
简单的两台主机之间的登陆,A用ssh连接到B
在A客户端用root密码执行:ssh-keygen -t rsa
ssh-keygen 是一个生成认证密匙的系统工具,使用的非对称加密算法包括
rsa、dsa
一路回车
你会发现在/root/.ssh/下生成了两个文件:id_rsa(私密),id_rsa.pub(公密)
把id_rsa.pub上传到B服务器并在B服务器下新建/root/.ssh/authorized_keys
把客户端的公密写入authorized_keys
cat id_rsa.pub >> authorized_keys (注意是追加不是覆盖)
这样在A客户端就可以不用输入密码ssh到B服务器
如果要双向连接的话就要在B服务器上使用:ssh-keygen -t rsa
把生成的公密写到A端的authorized_keys中
如果想要一台主机访问多台服务器,是把自己的公密上传给目的服务器写入authorized_keys中(亲测无效)至今不知道为什么
要实现一台主机访问多台服务器,登录时不用输入密码就得相互把自己的
公密发给对方。
这里只是一个简单的例子更多的ssh-keygen的用法和ssh的原理可以到openbsd
http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/ssh-keygen.1?query=ssh-keygen&sec=1
或者自行google
转载于:https://blog.51cto.com/capetowns/1690902