当前位置: 首页 > news >正文

服务器之间,相同帐号,实现免密钥登录

使用场景

1、Client端机器:10.108.0.1

2、Server端机器:10.108.0.2、10.108.0.3、10.108.0.1、10.108.0.4、10.108.0.5

目的:在Client端机器上,SSHServer端机器上,实现相同帐号,免密钥登录。

解决办法:

1、Client端生成公钥和私钥

执行 ssh-keygen -t rsa

[xxx@sdktest01v ~/.ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xxx/.ssh/id_rsa.
Your public key has been saved in /home/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
b0:b0:77:9a:01:b6:c0:bc:08:05:a2:a1:f4:6d:f9:77 xxx@server-host-1

此时在当前用户的Home目录下 .ssh 子目录里,生成了两个文件

  • 私钥:id_rsa

  • 公钥:id_rsa.pub

2、将生成的公钥给Server端机器

[xxx@sdktest01v ~/.ssh]$ ssh-copy-id  -i /home/xxx/.ssh/id_rsa.pub xxx@10.108.0.2
27
xxx@10.108.0.2's password: 
Now try logging into the machine, with "ssh 'xxx@10.108.0.2'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

ssh-copy-id:将公钥发到目标服务器上,并生成文件 /home/xxx/.ssh/authorized_keys

3、测试免密钥登录

ssh 10.108.0.2

[xxx@10.108.0.2 ~]$

显示登录成功。

4、无法登录的原因

  • 客户端的私钥和公钥文件位置必须位于 ~/.ssh

  • 确保双方 ~/.ssh 目录,父目录,公钥私钥,authorized_keys 文件,对当前用户至少要有执行权限,对其他用户最多只能有执行权限

  • authorized_keys 文件名确保正确

5、文件目录权限

Client端:

[xxx@10.108.0.1 ~/.ssh]$ ll
总用量 12
-rwx------ 1 xxx xxx 1675 10月 27 17:04 id_rsa
-rwx------ 1 xxx xxx  413 10月 27 17:04 id_rsa.pub
-rwx------ 1 xxx xxx  396 9月  23 10:53 known_hosts

Server端:

[xxx@10.108.0.2 ~/.ssh]$ ll
total 16
-rw------- 1 xxx xxx  413 Oct 27 18:54 authorized_keys
-rw------- 1 xxx xxx 1675 Oct 27 18:54 id_rsa
-rw-r--r-- 1 xxx xxx  413 Oct 27 18:54 id_rsa.pub
-rwx------ 1 xxx xxx  792 Oct 27 18:54 known_hosts

6、BUG

可以和Server机器通信,但是还需要密码登录(CentOS 6系统中复现,涉及ssh-copy-idSELinux

摘录一段E文的原因和解决办法:

When ssh-copy-id creates the authorized keys files it creates it with the proper permissions, but with the wrong SELinux label. 
The fix for this is restoring the labels to their policy defaults using this command:

restorecon -R ~/.ssh

相关文章:

  • 【noi 2.6_9289】Ant Counting 数蚂蚁{Usaco2005 Nov}(DP)
  • 数据获取以及处理系统 --- 功能规格说明书
  • 【JAVA】设计模式之懒汉式与恶汉式的单例模式实现的方法与详解
  • asp.net定时任务
  • 14. Html5的局:WebGL的纹理格式
  • Tomcat编译jsp生成Servlet文件的存放位置
  • Android事件总线(三)otto用法全解析
  • 反思总结然后整装待发
  • 当SetTimeout遇到了字符串
  • ABP文档 - EntityFramework 集成
  • [Java基础] Java中List.remove报错UnsupportedOperationException
  • 查看linux服务器的系统信息
  • sql事务、视图和索引
  • 谈谈springmvc的ResponseBodyAdvice
  • C语言之从内存角度理解不同类型的变量
  • 【译】JS基础算法脚本:字符串结尾
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 收藏网友的 源程序下载网
  • [译]Python中的类属性与实例属性的区别
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Codepen 每日精选(2018-3-25)
  • docker python 配置
  • Docker入门(二) - Dockerfile
  • Git 使用集
  • Java 内存分配及垃圾回收机制初探
  • JS笔记四:作用域、变量(函数)提升
  • k8s 面向应用开发者的基础命令
  • Laravel核心解读--Facades
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Python利用正则抓取网页内容保存到本地
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Webpack 4x 之路 ( 四 )
  • 再谈express与koa的对比
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 数据库巡检项
  • # 安徽锐锋科技IDMS系统简介
  • #Lua:Lua调用C++生成的DLL库
  • #考研#计算机文化知识1(局域网及网络互联)
  • (02)vite环境变量配置
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)创业的注意事项
  • .Net mvc总结
  • .Net Redis的秒杀Dome和异步执行
  • .NET 使用配置文件
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET开发者必备的11款免费工具
  • .NET开源项目介绍及资源推荐:数据持久层
  • .py文件应该怎样打开?
  • ??myeclipse+tomcat
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [Android Studio 权威教程]断点调试和高级调试
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬