什么是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