Linux-SSH之免密码登陆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-SSH之免密码登陆相关的知识,希望对你有一定的参考价值。

原理

在传统的SSH身份认证过程中,服务端(被动连接端)通过校验客户端(主动连接端)发送的用户名和密码来实现用户身份的验证。服务端除了用户名和密码的验证方式外,还可以通过保存并使用客户端的公钥(可以理解为PKI体系中的公钥)来验证客户端的身份。

技术分享图片

know_hosts:存储已知服务器的公钥信息。

authorized_keys:存储已知客户端的公钥信息。

id_rsa.pub:存储公钥信息。

id_rsa:存储私钥信息。

其中:

  • .ssh目录的权限必须是700。
  • .ssh/authorized_keys文件权限必须是600。

验证过程:

  1. 在客户端登陆前,客户端将公钥放在待登陆的服务器上。
  2. 客户端向服务器端发送公钥信息,申请以指定用户身份验证。
  3. 服务器端寻找对应用户家目录家目录下寻找公钥。
  4. 服务器端使用找到的公钥加密数据并发送给客户端。
  5. 客户端使用自己的私钥解密,而后将其发送给服务器端。
  6. 服务器端验证前后消息是否一致,以便确认用户身份。

环境

  • CentOS7_x86_64
  • Windows10
  • XShell
  • OpenSSH

步骤

1.生成非对称密钥对。

1 #生成SSH使用的公钥和私钥只用户家目录下的.ssh目录下
2 ssh-keygen -t rsa

 

2.创建authorized_keys文件。

1 #创建.authorized_keys文件
2 touch authorized_keys
3 #修改文件权限信息
4 chmod 600 authorized_keys

 

3.将客户端的公钥信息追加到服务器端的authorized_keys文件中。

1 #拷贝公钥信息至authorized_keys文件
2 ssh-copy-id -i ~/.ssh/id_rsa.pub
3 
4 scp -p ~/.ssh/id_rsa.pub [email protected]<remote_ip>:/root/.ssh/authorized_keys
5 
6 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

以上是关于Linux-SSH之免密码登陆的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程之免交互

Linux-SSH介绍与认证方式

shell编程之免交互(EOFExpect使用)

Shell编程之免交互

JSP 设计教师与学生不同登陆界面(带验证码)

Linux-ssh配置