天天看点

Linux下ssh秘钥方式登录远程服务器

一.SSH秘钥方式登录远程服务器原理: 1. 在客户端生成密钥对【公钥和私钥】。 2. 客户端把自己的公约拷贝到服务器上,服务器保存并重命名为authorized_keys当成验证文件。 3. 当客户端再次连接到服务器的时候,首先把自己的公约发给服务器,服务器收到后会和authorized_keys对比,如果不一样,直接拒绝,如果一样的话,服务器会用客户端的公约加密一个挑战(一个随机的数据),然后将加密的数据发给客户端。  5. 客户端收到之后,会用自己的解密,解密出来之后再把原始数据(就是服务器生成的那个挑战)发送给服务器 6. 服务器检查客户单是否解密正确,如果解密正确的话,客户端就直接登陆成功。

二.ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的 时候可以将验证申请交给ssh-agent来完成整个认证过程。   三.具体操作:  1. [[email protected] ~]# ssh-keygen -t rsa        //采用rsa的加密方式的公钥/私钥对 Generating public/private rsa key pair.    //提示正在生成 Enter file in which to save the key (/root/.ssh/id_rsa):   //询问输入私钥和公钥放在那里,Enter Created directory '/root/.ssh'.                    //私钥对在这个目录下 Enter passphrase (empty for no passphrase):       //这里可以给私钥设置密码(敲Enter可实现自动登录,登录时不需要私钥密码) Enter same passphrase again:   //提示再次输入私钥密码,再次回车 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub.  //提示公钥和私钥已经存放在这个目录下 The key fingerprint is:         de:9c:47:95:19:1c:da:83:9f:b2:f8:fd:30:27:70:74  [email protected] //提示key的指纹 注:#ssh-keygen -b 1024 -t dsa   //还可以采用dsa的加密方式 -b  1024 采用长度为1024字节的公钥/私钥对,最长4096字节,一般1024或2048 就可以了,太长的话加密解密需要的时间也长。

-t  dsa  采用dsa加密方式的公钥/私钥对,除了dsa还有rsa方式,rsa方式最短不能小于768字节长度。

2.  [[email protected] ~]# cd /root/.ssh [[email protected] .ssh]# ls id_rsa  id_rsa.pub [[email protected] .ssh]# ssh 192.168.8.71 The authenticity of host '192.168.8.71 (192.168.8.71)' can't be established. RSA key fingerprint is 11:21:c7:14:71:a6:68:b3:6c:fb:cd:b2:25:21:bd:9f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.8.71' (RSA) to the list of known hosts. [email protected]'s password:  Last login: Wed Feb  6 19:43:02 2013 from 192.168.8.70 [[email protected] ~]# exit [[email protected] .ssh]# ls id_rsa  id_rsa.pub  known_hosts 这里为了说明一下known_hosts这个文件当ssh过其他机器时就会生成这个文件,再一次ssh时就不会有yes的那个选项了 [[email protected] .ssh]# scp id_rsa.pub 192.168.8.71:/root/.ssh/authorized_keys [email protected]'s password:  id_rsa.pub                                  100%  404     0.4KB/s   00:00     [[email protected] .ssh]# ssh 192.168.8.71 Last login: Wed Feb  6 19:43:39 2013 from 192.168.8.70 [[email protected] ~]#  注:可以通过ssh-copy-id命令[实为脚本]进行拷贝公钥后,可以再服务器端不用设置相应的权限,因ssh-copy-id已经帮你设置好了。 这里我把id_rsa.pub直接改名为authorized_keys了,如果之前另一台机器有这个文件,不要直接改名,先scp过去,然后在另一台机器上执行#cat id_rsa.pub >> /root/.ssh/authorized_keys命令,因为authorized_keys可能会保存着其他的公钥  另一台机器再做一遍相同操作就可以相互ssh加密连接   注意:  .ssh 的权限必须是700.否则ssh服务器会拒绝登录        私钥的权限必须是600.否则ssh服务器会拒绝登录   3.把私钥加密 [[email protected] ~]# eval `ssh-agent` Agent pid 14877 [[email protected] ~]# ssh-add Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa) 如果之前给私钥密码#ssh 192.168.8.71时是需要输入私钥密码的,执行完这两条命令就不用了,#ssh-add不需要输入私钥密码,这是验证就交给ssh-agent来管理

转载于:https://blog.51cto.com/redkey/1187467

继续阅读