使用ssh秘钥对(证书)免密登陆Liunx实例

什么是SSH

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。

SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

为什么密钥比密码安全:

密钥对是通过一种算法生成的一对密钥,在生成的密钥对中,一个向外界公开,称

为公钥;另一个用户自己保留,称为私钥。

使用SSH密钥管理有什么好处?

1.安全性高:

(1)密钥对安全强度远高于常规用户口令,杜绝暴力破解威胁;

(2)不可能通过公钥推导出私钥。

2.易用快捷:

(1)首次使用只需服务器上进行配置,再对客户端做简单配置即可,以后登录时无

需再输入密码;

(2)一台服务器支持多个公钥,有人员离职时,只需要将其负责服务器上的公钥统

一删除即可,避免离职人员带来的安全风险。

认识SSH 密钥对

相较于传统的用户名和密码认证方式,SSH 密钥对有以下特点:

  • 仅适用于 Linux 实例。
  • SSH 密钥对登录认证更为安全可靠。
  • 便于远程登录大量 Linux 实例,方便管理。

什么是 SSH 密钥对

  • SSH 密钥对是通过一种加密算法生成的一对密钥:一个对外界公开,称为“公钥”;另一个您自己保留,称为“私钥”。
  • 如果您已经将公钥配置在 Linux 实例中,那么,在本地或者另外一个实例中,您可以使用私钥通过 SSH 命令或相关工具登录实例,而不需要输入密码。

优势

使用 SSH 密钥对有以下优势:

  • 安全性高:
    • 密钥对安全强度远高于常规用户口令,可以杜绝暴力破解威胁。
    • 不可能通过公钥推导出私钥。
  • 易用快捷:只需在控制台和本地客户端做简单配置即可远程登录实例,再次登录时无需再输入密码。如果您需要批量维护多个 ECS 实例,推荐使用这种方式登录。
  • 密钥对必须支持下列任一种加密方式:
    • Rsa (默认)
    • dsa
    • ssh-rsa
    • ssh-dss
    • ecdsa
    • ssh-rsa-cert-v00@openssh.com
    • ssh-dss-cert-v00@openssh.com
    • ssh-rsa-cert-v01@openssh.com
    • ssh-dss-cert-v01@openssh.com
    • ecdsa-sha2-nistp256-cert-v01@openssh.com
    • ecdsa-sha2-nistp384-cert-v01@openssh.com
    • ecdsa-sha2-nistp521-cert-v01@openssh.com

liunx中使用ssh秘钥

     使用ssh-keygen生成秘钥

 

 -b 2014是设置秘钥的字节长度 –t rsa是设置秘钥的加密方式;

然后一直回车直到生成上面这张所谓的image;这时秘钥已经生成了,可是并没有添liunx实例中去,接下来我们来为这个liunx实例添加秘钥对即ssh证书;

打开~/.ssh目录下的文件,

 

 可以看到有id-rsa和id-rsa.pub这两个文件,其中id-rsa是秘钥对的私钥,id-rsa.pub是秘钥对中的公钥,将公钥添加到新建的authorized_keys中

 

 为什么要添加到authorized_keys呢,这个可以从/etc/ssh/sshd_config中看到如下配置

通过vi打开/etc/ssh/sshd_config

 

 Liunx实例验证合法的证书是中这个路径中的authorized_keys文件中取得公钥的,所以要将这一行的注释去掉;

注意:这里因为修改的是系统文件,所以要root权限,用sodu来获取临时的root权限;

安全起见,设置验证文件为600:

chmod 600 ~/.ssh/authorized_keys

并且设置 .ssh 文件夹权限为700

chmod 700 ~/.ssh

当使用了秘钥对时,可以禁用密码登陆,只要在sshd_config中追加如下一行,即可禁用密码登陆:

 

当配置完这些后,还需要重启ssh,同样,在重启ssh时也是需要roo权限:

 

这样,就为这个liunx实例添加了一个ssh证书即秘钥对;

 

实例有了公钥,客户端就可以使用对应的私钥来登陆这个实例:

例如如果是使用putty来登陆实例的话,就需要是有puttygen在重编译私钥,

先将liunx实例上的私钥download下来,改一下后缀(*.ppk),然后打开puttygen(),

File->load private key 然后再save private key,这样就重编译了一个私钥,然后使用putty登陆liunx实例时,

 

找到SSh中的Auth中的private key file fro authentication导入刚刚重编译后的私钥,然后open,这样我们只需要输入用户名,liunx实例就会通过ssh秘钥解码出私钥,只要私钥和liunx实例上的公钥匹配的话,就允许登陆;

同样的,如果是用winscp可视化操作liunx实例上的文件时,也需要使用私钥登陆

 

 

在高级中找到SSH中的验证,导入私钥,这样就可以登陆到liunx实例中了;

 

注:远程登录

SSH指定密钥,连接远程服务器。

ssh –i /root/.ssh/ido_sch_pro guoxm@192.168.100.110 –p 22

如上:

/root/.ssh/ido_sch_pro:密钥文件路径

guoxm@192.168.100.110:需要连接的服务器用户名与IP

-p 22:端口22

posted @ 2018-07-30 11:34  等待与憧憬  阅读(2092)  评论(0编辑  收藏  举报