【Linux技术专题系列】「必备基础知识」一起探索(SSH体系下的公私密钥的介绍和使用技巧)

简介: 【Linux技术专题系列】「必备基础知识」一起探索(SSH体系下的公私密钥的介绍和使用技巧)

SSH下authorized_keys, id_rsa, id_rsa.pub, known_hosts作用


known_hosts


SSH会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的情况,就是这种情况



原因


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



有以下两个解决方案:


  1. 手动删除修改known_hosts里面的内容;
  2. 修改配置文件“~/.ssh/config”,加上这两行,重启服务器。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
复制代码



优缺点


  1. 需要每次手动删除文件内容,一些自动化脚本的无法运行(在SSH登陆时失败),但是安全性高;
  2. SSH登陆时会忽略known_hosts的访问,但是安全性低;



id_rsa、id_rsa.pub


我们做对称加密或是非对称加密:都需要公钥和私钥。

  • 公钥其实就是:id_rsa.pub:我们的客户端公钥上传到服务器,然后再把这个客户端公钥添加到authorized_keys。
  • 添加公钥后,服务器就会认为你这个客户端为可信任。你则可以访问这个服务器了。但是必须要有私钥


获取id_rsa.pub


密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过SSH暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。


下面来讲解如何在Linux服务器上制作密钥对,将公钥添加给账户,设置SSH,最后通过客户端登录。



制作密钥对


首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:

[root@host ~]# ssh-keygen  <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
复制代码


密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。


现在,在root用户的家目录中生成了一个.ssh的隐藏目录,内含两个密钥文件。id_rsa为私钥,id_rsa.pub为公钥。



在服务器上安装公钥


键入以下命令,在服务器上安装公钥:

[root@host ~]# cd .ssh
[root@host .ssh]# cat id_rsa.pub >> authorized_keys
复制代码


如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

[root@host .ssh]# chmod 600 authorized_keys
[root@host .ssh]# chmod 700 ~/.ssh
复制代码


  1. 设置SSH,打开密钥登录功能

编辑修改 /etc/ssh/sshd_config文件,进行如下设置:

cp /etc/ssh/sshd_config sshd_config_bk} #备份配置文件
sed -i 's@#Port 22@Port 22@' /etc/ssh/sshd_config #保证原来22端口可以
vi /etc/ssh/sshd_config
复制代码
RSAAuthentication yes
PubkeyAuthentication yes
复制代码



另外,请留意root用户能否通过SSH登录:

PermitRootLogin yes
复制代码

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthentication no
复制代码

最后,重启SSH服务:

[root@host .ssh]# service sshd restart
复制代码




authorized_keys


就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作



案例分析


  • A 服务器(192.168.10.11)为客户机器
  • B 服务器(192.168.20.10)为目标机


要达到的目的:


  • A机器ssh登录B机器无需输入密码;加密方式选 rsa|dsa均可以,默认dsa
  • 单向登陆的操作过程(能满足上边的目的):
  1. 登录A机器
  2. ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
  3. 将 id_dsa.pub 文件复制到B机器的root或者home下面用户的.ssh目录, 并·cat id_dsa.pub >> ~/.ssh/authorized_keys·
  4. 大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )



双向登陆的操作过程:


  1. ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:
  2. 两个节点都执行操作:#ssh-keygen -t rsa,然后全部回车,采用默认值.
  3. 这样生成了一对密钥,存放在用户目录的~/.ssh下。
  4. 将公钥考到对方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。




相关文章
|
4月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
373 146
|
7月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
2551 0
|
9月前
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
500 24
|
9月前
|
Linux
在线对Linux进行磁盘扩容的技术指南。
综上所述,Linux磁盘扩容的过程,重要的不仅是技术,更是对每一步骤的深刻理解和投入的爱心。只要手握正确的工具,我们不仅能满足"孩子"的成长需求,还能享受其中的乐趣和成就。
594 10
|
8月前
|
安全 网络协议 Linux
Linux查 ssh端口号和服务状态
本指南详细介绍如何检查SSH服务的运行状态,包括通过进程命令验证服务启动、查看监听端口、检测系统服务状态以及防火墙配置。同时提供安全建议,如修改默认端口、禁用密码登录和定期更新系统,确保SSH服务稳定与安全。适用于不同Linux发行版(Systemd/SysVinit),帮助用户全面排查和优化SSH配置。
|
10月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
459 10
|
12月前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
|
11月前
|
安全 Linux 网络安全
CentOS 8下SSH连接超时与“无法加载主机密钥”错误的排查与修复
在CentOS 8系统中,宝塔面板提示“出错了,面板运行时发生错误”,导致插件无法正常显示。同时,SSH连接超时,修复面板功能失效。通过VNC连接排查,发现SSH服务安装和配置问题频发,最终通过重装SSH、调整权限并重新生成主机密钥文件解决问题,成功恢复SSH连接。
874 16
|
安全 Linux 网络安全
Linux端的ssh如何升级?
Linux端的ssh如何升级?
1188 59
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
353 1