开发者学堂课程【Linux服务器运维基本操作:SSH远程连接 - 基于密钥验证】学习笔记,与课程紧密联系,让用户快速学习知识.
课程地址:https://developer.aliyun.com/learning/course/581/detail/8003
SSH远程连接 - 基于密钥验证
内容介绍
一、基于密钥的登录方式
二、基于密钥登陆的操作
一、基于密钥的登录方式
比如有两台机器,需要大量的从一台机器远程登录另一台机器上,如果不使用 ssh 免密登,那么在每一次登录时就要输入帐号名密码,这个时候就通过 shh 来验证,如果后续再去进行登录的话,就可以免密登录,把要登录的机器叫做服务端,当前操作机器叫做客户端。看看在这种基于密钥的情况下是什么流程。
流程说明:
首先基于必要的方式下要在客户端手动的生成一对密钥,公钥和私钥,比如客户端要远程登录到服务器,要通过某种生成公钥和私钥,然后将公钥拷贝给服务端S一份,并按照约束重命名为authonzed_keys,所以服务端有了客户端可解密的公钥authonzed_keys,此时服务端有了一个公钥,这个公钥是客户端生成的,当然服务端加密的信息客户端的私钥可以解密,接下来客户端C向S发选一个连接请求,信息包括ip、用户名,服务端S得到客户端C的信息后,会到authorized_ keys中查找,因为之前给过公钥有记录,如果有响应的ip和用户名S会随机生成一个字符串,
例如: qwer,服务端S将便用公钥对于符率qwer进行加密,发送给客户端C,得到服务端S发来的消息后,客户端C会使用私钥进行解密,然后将解密后的字符串发送给服务端S,服务端接收到解密后的字符串会跟先前生成的字符串进行对比,如果一致,就达成认证,允许免密码登录。如果不一致就要输入密码验证登录。
二、基于密钥登陆的操作
首先连接两台机器,服务端192.168.158.122,客服端192.168.158.121
通过客户端进去服务端,如果没有进行免密登录的话,要通过ssh连接到root用户192.168.158.122,此时要进行一个验证,并且输入密码,如,
#ssh root@192.168.158.122
The authenticity of host
‘
192.168.158.122 (192. 168.158.122)' can't be established.
RSA key fingerprint is 26:d8:5a:70:91:c6:fb:c0:e9:f4 :db:e4:9e:3C:8c:1b.
Are you sure you want to continue connecting (yes/no)? yes
warning: Permanently. added '192. 168.158.122' (RSA) to the list of known hosts .
root@192.168.158.122's password:
Last 1ogin: wed Jan. 3 01:16:42 2018 from 192.168.158.1
此时输入密码成功登录,随后 exit 再登时又需要输入密码,如,[root@node-2 ~]# exit
logout
Connection to 192.168.158.122 closed.
[root@node-1 ~]#
因为没有进行安全的验证所以每次登录都要进行输入密码,如何后续配置认证成功后就不用再输入密码呢,这里就需要使用 SSH 协议,而 OpenSSH 是 SSH 协议的免费开源实现。
OpenSSH 由客户端和服务端的软件组成。服务端是一个守护进程(daemon),默认情况下,CentOS系统会自带OpenSSH服务。
此时可以通过#ps -ef | grep sshd查看是否有 sshd。
(1)使用示例:
配置 node-1(192.168.158.121)至node-2(192.168.158.122)机器的免密登录。
- 在node-1 机器上生成密钥
ssh-keygen -t rsa [dsa] 按四下回车
生成密钥文件和私钥文件id. rsa, id_ rsa. pub,例下:
[root@node-1 ~]# ssh-keygen -t rsa
Gener ating 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 1 dentification has been saved in /root/.ssh/id_ rsa.
Your. pub1ic key has been saved in /root/. ssh/id_ rsa. pub.
The_ key. fingerprint_ is:
7e:38:29:3a:21 :6d:30:56:e2:c4:f9:6f:c6:4C:97 :d2 rootCnode-1
The key's_ randomart image is:
cd到.ssh路径下可查看到在当前路径下有一个私钥id_rsa, 公钥id_rsa.pub
- 将公钥拷贝给服务端node-2机器
同样使用命令ssh-copy-id node-2,可以进行相应的拷贝操作和命名,这里拷贝id给192.168.158.122,重命名为ssh下的authorized_ keys,例下:
[root@node-1.ssh]# ssh-copy-id 192.168.158.122
root@192.168.158.122's password :
Now try 1ogging into the machine
,
with "ssh '192. 168.158.1221",and check in:
. ssh/authorized_ keys
to make Sure we haven't added extra keys that you weren't expecting.
拷贝后可以cd到.ssh查看,此时多了一个authorized_ keys,这个名字是工具自动生成的,如,
[root@node-2 . ssh]#
ll
tota14
- r
w
------ - .1 root root
393 Jan
3 01:20 authorized_ keys
再在node-1上#ssh root@192.168.158.122则直接登录上了,因为在远程发送过程当中,他已经做了一个回传信息的解密,进行认证成功了。首次链接需要输入用户密码、验证成功后后续免密登陆。
(2)密钥非对称性
反过来做node-2到node-1的加密,
[root@node-2.ssh]#ssh root@192.168.158.122回车会发现没有进行任何的验证,仍然需要输入密码,所有从侧面反映出公钥与私钥的非对称加密,公钥负责加密,私钥负责解密,反之不可。