公钥登陆原理解析及相关
基于公钥认证
在上面介绍的登录流程中可以发现,每次登录都需要输入密码,很麻烦。SSH提供了另外一种可以免去输入密码过程的登录方式:公钥登录。流程如下:
- 1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
- 2.Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R)
,然后将加密后信息发送给Client。 - 3.Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
- 4.Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
- 5.Server端会最后比较Digest1和Digest2是否相同,完成认证过程。
ssh-keygen是用于生产密钥的工具。 -t:指定生成密钥类型(rsa、dsa、ecdsa等) -P:指定passphrase,用于确保私钥的安全 -f:指定存放密钥的文件(公钥文件默认和私钥同目录下,不同的是,存放公钥的文件名需要加上后缀.pub)
[root@mysql.quan.bbs ~]$ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa Generating public/private rsa key pair. 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: f0:43:a6:0e:6d:b7:38:c7:47:22:4a:a7:4d:0b:74:59 root@mysql.quan.bbs The key's randomart image is: +--[ RSA 2048]----+ | E | | o | | . + o | | . o * | | + B S . | | . @ * = | | o * + . | | o . | | | +-----------------+ [root@mysql.quan.bbs ~]$cd - /root/.ssh [root@mysql.quan.bbs .ssh]$ll -a total 20 drwx------ 2 root root 4096 Mar 2 20:08 . dr-xr-x---. 5 root root 4096 Mar 2 20:05 .. -rw------- 1 root root 1671 Mar 2 20:08 id_rsa -rw-r--r-- 1 root root 401 Mar 2 20:08 id_rsa.pub -rw-r--r-- 1 root root 1215 Feb 18 09:22 known_hosts
[root@mysql.bkone.quan.bbs ~]$ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. 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: 6e:67:dd:13:a5:a4:e3:88:66:83:54:c7:0c:9f:cc:ff root@mysql.bkone.quan.bbs The key's randomart image is: +--[ RSA 2048]----+ | . | | B . | | . O . .| | . . . o o | | . S + o | | . o . + + . | | . B + o E | | + + . | | | +-----------------+ [root@mysql.bkone.quan.bbs ~]$cd /root/.ssh/ [root@mysql.bkone.quan.bbs .ssh]$ll -a total 16 drwx------ 2 root root 4096 Mar 2 20:09 . dr-xr-x---. 5 root root 4096 Mar 2 20:09 .. -rw------- 1 root root 1671 Mar 2 20:09 id_rsa -rw-r--r-- 1 root root 407 Mar 2 20:09 id_rsa.pub
1.id_rsa:保存私钥 2.id_rsa.pub:保存公钥 3.authorized_keys:保存已授权的客户端公钥 4.known_hosts:保存已认证的远程主机ID
命令解析
scp命令(文件传输) 标准语法 上传 scp -r -P 2222 install.log root@192.168.100.100:/root/ 下载 scp -r -P 2222 root@192.168.100.100:/root/install.log /home/install.log 使用技巧 服务端口 默认为22端口,端口变更需要使用-P参数指定端口 指定用户 明确指定需要连接的用户 目录拷贝 目录拷贝时,需要增加-r参数,进行递归传输文件
ssh-keygen命令(秘钥创建) 标准语法 交互式创建 ssh-keygen 非交互式创建 ssh-keygen -f ~/.ssh/id_rsa -P "" 参数解释 -f 指定秘钥文件的位置 -P 指定秘钥空密码 第四:ssh-copy-id命令(互信配置) 标准语法 ssh-copy-id "root@192.168.100.100 -p 2222" 使用技巧 指定用户 明确与哪个主机的哪个用户配置互信 指定端口 需要使用-p参数指定端口,并且将整个连接串使用双引号进行引起