SSH 公钥登录

前言

使用密码登录ssh服务器,每次必须输入密码,感觉比较繁琐,尤其是密码比较复杂而且维护的服务器有多的情况下。这个时候就需要到公钥登录(public key)登录,省去输入密码的步骤。

所谓“公钥登录”就是指:用户将自己的公钥储存在远程主机上。登录的时候远程服务器会发送一段随即字符串到客户端,客户端接收到以后用私钥加密后发给服务器,服务器用事先存好的公钥进行解密,如果解密出来的字符串相同,则证明用户是可信的允许直接登录,不再要求密码(当然可以创建私钥的时候创建密码,只要第一次登录登录的时候验证一次,以后就不需要了)

 生成私钥和公钥的方式有很多种, 下面分别介绍。

 因为puttygen生成的密钥有问题可能会出现:“Server refused our key”,最好使用XShell生成密钥或者在远程Linux VPS/服务器利用 ssh-keygen生成密钥。

===================  /var/log/secure

.ssh ,  authorized_keys 用户和组都是需要登录的用户。


权限很重要。搞了很久发现权限问题,key这东西对权限有很严格的限制。
登录端的 .ssh目录权限是  ssh-keygen自己生成的不要乱改
默认.ssh目录是700 , id_rsa 是600  不能多也不能少,如果有写的权限会导致 ssh认为这个文件不可靠,可能被改写。

被登录的机器 .ssh 目录是 700 ,至少不能有写的权限
.ssh 目录下的 authorized_keys 权限 600或644

在Linux下通过 ssh-keygen生成密钥

第一步 生成密钥文件
zbj@web ~]# ssh-keygen -b 1024 -t dsa
Generating public/private dsa key pair.
#提示正在生成,如果选择4096长度,可能需要较长时间
Enter file in which to save the key (/root/.ssh/id_dsa): 
#询问把公钥和私钥放在那里,回车用默认位置即可
Enter passphrase (empty for no passphrase): 
#询问输入私钥密语,为了实现自动登陆,应该不要密语,直接回车
Enter same passphrase again: 
#再次提示输入密语,再次直接回车
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
#提示公钥和私钥已经存放在/root/.ssh/目录下
The key fingerprint is:
71:e5:cb:15:d3:8c:05:ed:05:84:85:32:ce:b1:31:ce zbj@web
#提示key的指纹
 
说明:
-b 1024 采用长度为1024字节的公钥/私钥对,最长4096字节,一般1024或2048就可以了,太长的话加密解密需要的时间也长。
-t dsa  采用dsa加密方式的公钥/私钥对,除了dsa还有rsa方式,rsa方式最短不能小于768字节长度。
 
 
1、在本地生成一对密钥文件(公钥和私钥)
# ssh-keygen
# 以上命令等价于 ssh-keygen -t rsa
# -t:指定密钥的类型,默认为SSH-2 的rsa类型;
 
[root@localhost ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase):          # 如果设置密码,通过密钥连接也需要输入密码
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:
35:dd:d8:49:05:be:e9:7e:89:b7:86:e2:96:17:a0:2b root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|              oo.|
|           . * . |
|          o o =  |
|         . o   o |
|        S . . o  |
|         .   o   |
|          . . = .|
|       E . + = +.|
|        . o.o +o.|
+-----------------+
第二步 把生成的密钥文件上传到远程主机
ssh-copy-id user@host

好了,经过以上两步之后,从此你再登录,就不需要输入密码了。此命令执行后,远程主机直接将用户的公钥保存在 ~/.ssh/authorized_keys 文件中。

参考文档
ssh的原理和基本使用
SSH公钥原理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值