ssh证书登录(实例详解)

2023-05-16

前言

本文基于实际Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的各种问题,以及实现hadoop集群部署要求的无密码跳转问题。

ssh有密码登录和证书登录,初学者都喜欢用密码登录,甚至是root账户登录,密码是123456。但是在实际工作中,尤其是互联网公司,基本都是证书登录的。内网的机器有可能是通过密码登录的,但在外网的机器,如果是密码登录,很容易受到攻击,真正的生产环境中,ssh登录都是证书登录。

证书登录的步骤

1.客户端生成证书:私钥和公钥,然后私钥放在客户端,妥当保存,一般为了安全,访问有黑客拷贝客户端的私钥,客户端在生成私钥时,会设置一个密码,以后每次登录ssh服务器时,客户端都要输入密码解开私钥(如果工作中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清)。

2.服务器添加信用公钥:把客户端生成的公钥,上传到ssh服务器,添加到指定的文件中,这样,就完成ssh证书登录的配置了。

假设客户端想通过私钥要登录其他ssh服务器,同理,可以把公钥上传到其他ssh服务器。

真实的工作中:员工生成好私钥和公钥(千万要记得设置私钥密码),然后把公钥发给运维人员,运维人员会登记你的公钥,为你开通一台或者多台服务器的权限,然后员工就可以通过一个私钥,登录他有权限的服务器做系统维护等工作,所以,员工是有责任保护他的私钥的,如果被别人恶意拷贝,你又没有设置私钥密码,那么,服务器就全完了,员工也可以放长假了。

客户端建立私钥和公钥

在客户端终端运行命令


ssh-keygen -t rsa  

rsa是一种密码算法,还有一种是dsa,证书登录常用的是rsa。

假设用户是blue,执行 ssh-keygen 时,才会在我的home目录底下的 .ssh/ 这个目录里面产生所需要的两把 Keys ,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)

另外就是私钥的密码了,如果不是测试,不是要求无密码ssh,那么对于passphrase,不能输入空(直接回车),要妥当想一个有特殊字符的密码。

ssh服务端配置

ssh服务器配置如下:


vim /etc/ssh/sshd_config
#禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

#有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no  

配置好ssh服务器的配置了,那么我们就要把客户端的公钥上传到服务器端,然后把客户端的公钥添加到authorized_keys

在客户端执行命令


scp ~/.ssh/id_rsa.pub blue@<ssh_server_ip>:~  

在服务端执行命令


cat  id_rsa.pub >> ~/.ssh/authorized_keys  

如果有修改配置/etc/ssh/sshd_config,需要重启ssh服务器


/etc/init.d/ssh restart  

 

客户端通过私钥登录ssh服务器

ssh命令


ssh -i /blue/.ssh/id_rsa blue@<ssh_server_ip>  

scp命令


scp -i /blue/.ssh/id_rsa filename blue@<ssh_server_ip>:/blue  

每次敲命令,都要指定私钥,是一个很繁琐的事情,所以我们可以把私钥的路径加入ssh客户端的默认配置里

修改/etc/ssh/ssh_config


#其实默认id_rsa就已经加入私钥的路径了,这里只是示例而已
IdentityFile ~/.ssh/id_rsa
#如果有其他的私钥,还要再加入其他私钥的路径
IdentityFile ~/.ssh/blue_rsa  

其他应用场景

SecureCRT密钥key远连接程ssh证书登录Linux

  国内大部分人用的系统是windows,而windows下有很多ssh客户端图形工作,最流行,功能最强大的就是SecureCRT了,所以我会单独针对SecureCRT简单讲下实现ssh证书登录Linux的要点,步骤如下:

  1:在SecureCRT创建私钥和公钥:主菜单->工具->创建公钥->选择RSA->填写私钥的密码->密钥长度填为1024->点击完成,生成两个文件,默认名为identity和identity.pub

  2.把私钥和公钥转换为OpenSSH格式:主菜单->工具->转换私钥到OpenSSH格式->选择刚生成私钥文件identity->输入私钥的密码->生成两个文件,指定为id_rsa,id_rsa.pub 

  3.把公钥id_rsa.pub上传到ssh服务器,按照之前配置服务器端的证书,再配置一次。

  另外,如果你之前用windows的 SecureCRT的证书登录linux的,有一天你换成了linux,并希望通过原来的私钥登录公司的服务器,那么可以把id_rsa拷贝倒~/.ssh/目录下,配置ssh客户端参考上文。

  备注:ssh对证书的文件和目录权限比较敏感,要么根据出错提示设置好文件和目录权限,要么是把StrictModes选项设置为no

hadoop部署的无密码ssh登录

hadoop要求master要无密码跳转到每个slave,那么master就是上文中的ssh客户端了,步骤如下

   在hadoop master上,生成公钥私钥,这个场景下,私钥不能设置密码。

   把公钥上传到每个slave上指定的目录,这样就完成了ssh的无密码跳转了。

总结

ssh证书登录,在实际工作才是最常用的登录方式,本人结合了真正工作的场景普及了ssh证书登录的知识,并根据流行的hadoop部署和windows下最常用的SecureCRT实例讲解了证书登录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ssh证书登录(实例详解) 的相关文章

随机推荐

  • 教你一招---如何把桌面弄到D盘

    有很多网友有个习惯 xff0c 就是桌面上有好多文件 xff0c 几乎重要的文件和工作文件都在桌面和我的文档里面 xff0c 嘿嘿 xff0c 我也是其中之一啊 xff0c 哈哈 xff0c 好几次重装了系统丢了文件 xff0c 那个着急啊
  • [转]SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录

    一 什么是 SSH xff1f SSH全称 Secure SHell 是一种网络协议 xff0c 顾名思义就是非常安全的shell xff0c 主要用于计算机间加密传输 早期 xff0c 互联网通信都是基于明文通信 xff0c 一旦被截获
  • js如何判断小数点后有几位

    lt script gt var n 61 3 143423423 alert n toString split 34 34 1 length lt script gt js javascrip 截取小数点后几位 第一种 xff0c 利用m
  • 无效类字符串:ProgID: Excel.Application

    网上发现的方案是改注册表 xff0c 其实用不着那么麻烦 xff0c 找2种excel文件 xff1a xlsx和xls xff0c 把默认打开方式都换成你机器上有的程序就行 xff0c 比如WPS Office的WPS 表格
  • JAVA版拆分大整数为2幂的和算法

    import java util ArrayList import java util List public class StrTest public static void main String args 模拟生成一个大整数 Long
  • 使用vue时遇到的内存溢出以及处理

    业务场景 vue帮我们处理很多数据到视图 数据到事件的处理 xff0c 其中不乏许多闭包 事件处理 xff0c 因此比较容易忽视内存溢出的处理 前言 几种常见的内存溢出 1 全局变量引起的内存泄漏 2 闭包引起的内存泄漏 3 dom清空或删
  • ios 显示html标签,超链接颜色以及下划线的处理

    有的时候 xff0c 我们的app需要显示html标签的效果 xff0c 这个时候 xff0c 如果需求不是特别复杂的话 xff0c 我们都是可以使用textView来实现的 对冉Label也可以实现 xff0c 但是label很难实现超链
  • 并发用户数、吞吐量、思考时间的计算公式

    二 软件性能的几个主要术语 1 响应时间 xff1a 对请求作出响应所需要的时间 网络传输时间 xff1a N1 43 N2 43 N3 43 N4 应用服务器处理时间 xff1a A1 43 A3 数据库服务器处理时间 xff1a A2
  • 怎么获得MIUI12系统的root权限

    MIUI12系统怎么样拥有ROOT权限 xff1f 大家都知道 xff0c android手机有ROOT权限 xff0c 一旦手机拥有root相关权限 xff0c 能够实现更强的功能 xff0c 打个比方大家部门的营销部门 xff0c 使用
  • iPhone查看WiFi密码(篇章一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 第一章 xff1a iPhone查看那些 曾经手动连接过 的WiFi密码 1 找到 iCloud xff08 不同系统版本位置不同 xff0c 但都在设置里 xff09 进
  • 深度卷积神经网络TensorFlow GPU实现

    深度卷积神经网络TensorFlow GPU实现 Deep Learning CNN s in Tensorflow with GPUs Taylor Guo 2017年6月11日 本文讲解卷积神经网络架构 xff0c 如何在tensorf
  • 原版XP合集,非BT下载

    原版XP和集 xff0c 非BT下载 都用迅雷下载 xff09 因FTP下载比较稳定 一般不会出现BT丢种的问题 所以这里只发FTP下载连接 如果大家还有更好的 欢迎补充 xff01 联想xp pro SP2 http web qtedu
  • Eclipse快捷键-方便查找

    行注释 销注释 Ctrl 43 块注释 销注释 Ctrl 43 Shift 43 Ctrl 43 Shift 43 查找 查找替换 Ctrl 43 H Ctrl 43 F 查找下一个 往回找 Ctrl 43 K Ctrl 43 Shift
  • OpenGL鼠标点击事件

    include lt windows h gt Windows的头文件 include lt gl gl h gt OpenGL32库的头文件 include lt gl glu h gt GLu32库的头文件 include lt gl
  • debian中文字体美化

    为什么80 的码农都做不了架构师 xff1f gt gt gt 1 安装必要的字体包 Debian 和 Ubuntu 下对中文支持比较好的字体有 xff1a ttf droid ttf wqy zenhei和ttf wqy microhei
  • Kindeditor上传失败问题解决

    xff08 问题关键词 xff1a kindeditor 上传图片失败 kindeditor上传图片成功 xff0c 但是页面上却提示失败 kindeditor得到Json正确 xff0c 确提示失败 xff09 今天又遇到了一个比较无奈的
  • bash ps1变量_学习鸟哥私房菜--linux bash 的环境变量ps1设置

    bash里边的变量ps1是用户平时的提示符 xff0c 系统默认为 username 64 host 工作目录 关于ps1的相关介绍详见 xff1a http www cnblogs com starspace archive 2009 0
  • 人工智能让生活更美好

    人 I 工 I 智 I 能 I到 I来 科 I技 I大 I门 打 I 开 提起人工智能 你会想到什么 阿尔法围棋 浪潮天梭象棋 甚至会想到 大白 吧啦啦啦 史密斯电影 我 机器人 科技一直推动社会的变化 技术的飞速更迭与人类移动网络化的行为
  • 解压命令linux tgz,tar 解压_linux中的“tar命令”怎么解压“.tgz”与“.tar.gz”文件?...

    在LINUX下如何将tar压缩文件解压到指定的目录下 一 解压 tar gz格式到指定的目录下 xff1a 命令格式为 xff1a tar zxvf 压缩包文件名 tar gz C 路径 例如 xff1a tar zxvf japan ta
  • ssh证书登录(实例详解)

    前言 本文基于实际Linux管理工作 xff0c 实例讲解工作中使用ssh证书登录的实际流程 xff0c 讲解ssh证书登录的配置原理 xff0c 基于配置原理 xff0c 解决实际工作中 xff0c windows下使用SecureCRT