云主机ssh密钥登录

使用云主机时,出于安全性考虑,需要设置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-----结尾

ssh-keygen可以在客户端执行,也可以在服务端执行。

不论在哪里执行,最终目的都是把公钥文件注入Server端的authorized_key文件中,私钥保存在本地。


2,上传公钥(id_rsa.pub)文件,将其写入到服务器端对应的authorized_key文件中

可以用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 root@192.168.1.200

(四)关闭密码登陆

1,修改SSH的配置文件/etc/ssh/sshd_config

PasswordAuthentication yes    #使用密码登录
修改为:
PasswordAuthentication no  # 关闭密码登录,使用密钥登录

2、保存后重启SSH服务。

# systemctl restart sshd

3、其它参数

#PubkeyAuthentication yes   # 此选项为key登录方式参数,默认是注释掉的,并且是默认开启的。

因此,禁用密码登录后,若此参数不配置禁用,则默认使用密钥登录。

sshd_config参数详情参考:http://www.jinbuguo.com/openssh/sshd_config.html

(五)常见错误

密钥登录报错:
[root@host]# ip netns exec qdhcp-488d4132-fa9a-408f-b430-ff3967d550b8 ssh -i ~/.ssh/id_rsa root@192.168.1.200
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值