openstack-nova密钥对

使用云主机时,出于安全性考虑,需要设置ssh登录。

ssh主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录,登录不需要输入密码。这里主要分析密钥登录方式

(一)基础

     1) 公钥:用于加密,存在于服务器
     2) 私钥:用于解密,存在于客户机

(二)流程

     1)客户端向服务器发出连接请求
     2)服务器查看客户端公钥(~/.ssh/authorized_keys)该客户机(客户机标志:用户@Host)对应的公钥
     3)服务器验证公钥合法,则产生一条随机数(challenge),用公钥加密发送给客户端
     4)客户端用私钥解密回传服务器端。
     5)随机数一致,认证通过。

(三)操作

1,生成密钥命令:
# ssh-keygen -t rsa
命令执行完,cd至.ssh文件夹就可以看到生成的公钥(id_rsa.pub)文件,私钥文件(id_rsa)
注:
私钥都是以-----BEGIN RSA PRIVATE KEY-----开头,以-----END RSA PRIVATE KEY-----结尾

2,上传公钥(id_rsa.pub)文件传送到服务器端,可以用scp传输,也可以用ssh-copy-id工具来传送(其实就是一个脚本)

2.1)在客户端,用ssh-copy-id,将公钥复制到远程服务器端
# ssh-copy-id -i .ssh/id_rsa.pub  用户名@192.168.x.xxx

注意:

ssh-copy-id 将key写到远程机器的 ~/.ssh/authorized_key文件中。

第一次ssh-copy-id需要密码登录。

2.2)也可以用scp的方式将公钥复制到远程服务器端
若用scp,则公钥文件传输到服务器端后,需要再在服务器端,用cat命令,把公钥写入服务器端的~/.ssh/authorized_keys文件中。
或者直接在客户端执行几个命令的集合:
# cat ~/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"

3,在客户端,指定私钥,进行无密码登录服务器端。

#ssh -i ~/.ssh/id_rsa [email protected]

(四)常见错误

密钥登录报错:
[root@host]# ip netns exec qdhcp-488d4132-fa9a-408f-b430-ff3967d550b8 ssh -i ~/.ssh/id_rsa [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:cv661XpC4DfQnM3royqAPcsb9xiNpI1HjDfOxPJNat8.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:38
RSA host key for 192.168.1.200 has changed and you have requested strict checking.
Host key verification failed.

处理方法:
[root@host]# vim /root/.ssh/known_hosts 

删掉/root/.ssh/known_hosts文件中,192.168.1.200对应的一行数据,再次登录可成功。

原因:

一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。 


参考:https://blog.csdn.net/liu_qingbo/article/details/78383892


猜你喜欢

转载自blog.csdn.net/wuyongpeng0912/article/details/80807789