怎么给自己Linux远程登录设置:SSH证书登录

Linux 配置双机SSH信任实现免密远程登录 一、使用场景及实现原理 1、使用场景  有两台服务器A、B,需要经常进行互相访问,但是两者每次访问时,都需要验证用户名和密码,这样太麻烦了! 如果能免密码直接登录就好了~ 所以就有了SSH添加信任实现免密码登录了。 2、实现原理 它是使用一种被称为"公私钥"认证的方式来进行ssh登录。"公私钥"认证方式简单的解释是: 首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_r... 阅读详情

SSH 是服务器登录工具,提供密码登录和密钥登录。但是,SSH 还有第三种登录方法,那就是证书登录。很多情况下,它是更合理、更安全的登录方法,本文就介绍这种登录方法。

一、非证书登录的缺点密码登录和密钥登录,都有各自的缺点。密码登录需要输入服务器密码,这非常麻烦,也不安全,存在被暴力破解的风险。密钥登录需要服务器保存用户的公钥,也需要用户保存服务器公钥的指纹。这对于多用户、多服务器的大型机构很不方便,如果有员工离职,需要将他的公钥从每台服务器删除。

二、证书登录是什么?证书登录就是为了解决上面的缺点而设计的。它引入了一个证书颁发机构(Certificate1 authority,简称 CA),对信任的服务器颁发服务器证书,对信任的用户颁发用户证书。登录时,用户和服务器不需要提前知道彼此的公钥,只需要交换各自的证书,验证是否可信即可。证书登录的主要优点有两个:(1)用户和服务器不用交换公钥,这更容易管理,也具有更好的可扩展性。(2)证书可以设置到期时间,而公钥没有到期时间。针对不同的情况,可以设置有效期很短的证书,进一步提高安全性。

三、证书登录的流程SSH 证书登录之前,如果还没有证书,需要生成证书。具体方法是:(1)用户和服务器都将自己的公钥,发给 CA;(2)CA 使用服务器公钥,生成服务器证书,发给服务器;(3)CA 使用用户的公钥,生成用户证书,发给用户。有了证书以后,用户就可以登录服务器了。整个过程都是 SSH 自动处理,用户无感知。第一步,用户登录服务器时,SSH 自动将用户证书发给服务器。第二步,服务器检查用户证书是否有效,以及是否由可信的 CA 颁发。第三步,SSH 自动将服务器证书发给用户。第四步,用户检查服务器证书是否有效,以及是否由信任的 CA 颁发。第五步,双方建立连接,服务器允许用户登录。

四、生成 CA 的密钥证书登录的前提是,必须有一个 CA,而 CA 本质上就是一对密钥,跟其他密钥没有不同,CA 就用这对密钥去签发证书。虽然 CA 可以用同一对密码签发用户证书和服务器证书,但是出于安全性和灵活性,最好用不同的密钥分别签发。所以,CA 至少需要两对密钥,一对是签发用户证书的密钥,假设叫做 user_ca,另一对是签发服务器证书的密钥,假设叫做 host_ca。使用下面的命令,生成 user_ca。

生成 CA 签发用户证书的密钥

ssh-keygen -t rsa -b 4096 -f ~/.ssh/user_ca -C user_ca

上面的命令会在 ~/.ssh 目录生成一对密钥:user_ca(私钥)和 user_ca.pub(公钥)。

这个命令的各个参数含义如下。

-t rsa:指定密钥算法 RSA。
-b 4096:指定密钥的位数是4096位。安全性要求不高的场合,这个值可以小一点,但是不应小于1024。
-f ~/.ssh/user_ca:指定生成密钥的位置和文件名。
-C user_ca:指定密钥的识别字符串,相当于注释,可以随意设置。
使用下面的命令,生成 host_ca。

生成 CA 签发服务器证书的密钥

ssh-keygen -t rsa -b 4096 -f host_ca -C host_ca

上面的命令会在~/.ssh目录生成一对密钥:host_ca(私钥)和 host_ca.pub(公钥)。

现在,~/.ssh 目录应该至少有四把密钥。

~/.ssh/user_ca
~/.ssh/user_ca.pub
~/.ssh/host_ca
~/.ssh/host_ca.pub
五、CA 签发服务器证书有了 CA 以后,就可以签发服务器证书了。签发证书,除了 CA 的密钥以外,还需要服务器的公钥。一般来说,SSH 服务器(通常是sshd)安装时,已经生成密钥 /etc/ssh/ssh_host_rsa_key 了。如果没有的话,可以用下面的命令生成。

sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -b 4096 -t rsa

上面命令会在 /etc/ssh 目录,生成 ssh_host_rsa_key(私钥)和 ssh_host_rsa_key.pub(公钥)。然后,需要把服务器公钥 ssh_host_rsa_key.pub,复制或上传到 CA 所在的服务器。上传以后,CA 就可以使用密钥 host_ca 为服务器的公钥 ssh_host_rsa_key.pub 签发服务器证书。

ssh-keygen -s host_ca -I host.example.com -h -n host.example.com -V +52w ssh_host_rsa_key.pub

上面的命令会生成服务器证书 ssh_host_rsa_key-cert.pub(服务器公钥名字加后缀-cert)。这个命令各个参数的含义如下。

-s:指定 CA 签发证书的密钥。
-I:身份字符串,可以随便设置,相当于注释,方便区分证书,将来可以使用这个字符串撤销证书。
-h:指定该证书是服务器证书,而不是用户证书。
-n host.example.com:指定服务器的域名,表示证书仅对该域名有效。如果有多个域名,则使用逗号分隔。用户登录该域名服务器时,SSH 通过证书的这个值,分辨应该使用哪张证书发给用户,用来证明服务器的可信性。
-V +52w:指定证书的有效期,这里为 52 周(一年)。默认情况下,证书是永远有效的。建议使用该参数指定有效期,并且有效期最好短一点,最长不超过 52 周。
ssh_host_rsa_key.pub:服务器公钥。
生成证书以后,可以使用下面的命令,查看证书的细节。

ssh-keygen -L -f ssh_host_rsa_key-cert.pub

最后,为证书设置权限。

chmod 600 ssh_host_rsa_key-cert.pub

六、CA 签发用户证书下面,再用 CA 签发用户证书。这时需要用户的公钥,如果没有的话,客户端可以用下面的命令生成一对密钥。

ssh-keygen -f ~/.ssh/user_key -b 4096 -t rsa

上面命令会在 ~/.ssh 目录,生成 user_key(私钥)和 user_key.pub(公钥)。然后,将用户公钥 user_key.pub,上传或复制到 CA 服务器。接下来,就可以使用 CA 的密钥 user_ca 为用户公钥 user_key.pub 签发用户证书。

ssh-keygen -s user_ca -I user@example.com -n user -V +1d user_key.pub

上面的命令会生成用户证书 user_key-cert.pub(用户公钥名字加后缀-cert)。这个命令各个参数的含义如下。

-s:指定 CA 签发证书的密钥
-I:身份字符串,可以随便设置,相当于注释,方便区分证书,将来可以使用这个字符串撤销证书。
-n user:指定用户名,表示证书仅对该用户名有效。如果有多个用户名,使用逗号分隔。用户以该用户名登录服务器时,SSH 通过这个值,分辨应该使用哪张证书,证明自己的身份,发给服务器。
-V +1d:指定证书的有效期,这里为1天,强制用户每天都申请一次证书,提高安全性。默认情况下,证书是永远有效的。
user_key.pub:用户公钥。
生成证书以后,可以使用下面的命令,查看证书的细节。

ssh-keygen -L -f user_key-cert.pub

最后,为证书设置权限。

chmod 600 user_key-cert.pub

七、服务器安装证书CA 生成服务器证书 ssh_host_rsa_key-cert.pub 以后,需要将该证书发回服务器,可以使用下面的 scp 命令,将证书拷贝过去。

scp ~/.ssh/ssh_host_rsa_key-cert.pub root@host.example.com:/etc/ssh/

然后,将下面一行添加到服务器配置文件 /etc/ssh/sshd_config。

HostCertificate/etc/ssh/ssh_host_rsa_key-cert.pub

上面的代码告诉 sshd,服务器证书是哪一个文件。重新启动 sshd。

sudo systemctl restart sshd

或者

sudo service sshd restart

八、服务器安装 CA 公钥为了让服务器信任用户证书,必须将 CA 签发用户证书的公钥 user_ca.pub,拷贝到服务器。

scp ~/.ssh/user_ca.pub root@host.example.com:/etc/ssh/

上面的命令,将 CA 签发用户证书的公钥 user_ca.pub,拷贝到 SSH 服务器的 /etc/ssh 目录。然后,将下面一行添加到服务器配置文件 /etc/ssh/sshd_config。

TrustedUserCAKeys/etc/ssh/user_ca.pub (www.113p.cn)

上面的做法是将 user_ca.pub 加到 /etc/ssh/sshd_config,这会产生全局效果,即服务器的所有账户都会信任 user_ca 签发的所有用户证书。另一种做法是将 user_ca.pub 加到服务器某个账户的 ~/.ssh/authorized_keys 文件,只让该账户信任 user_ca 签发的用户证书。具体方法是打开 ~/.ssh/authorized_keys,追加一行,开头是 @cert-authority principals="…",然后后面加上 user_ca.pub 的内容,大概是下面这个样子。

@cert-authority principals=“user” ssh-rsa AAAAB3Nz…XNRM1EX2gQ==

上面代码中,principals=“user” 指定用户登录的服务器账户名,一般就是 authorized_keys 文件所在的账户。重新启动 sshd。

sudo systemctl restart sshd

九、客户端安装证书 (百度:113资讯网)客户端安装用户证书很简单,就是从 CA 将用户证书 user_key-cert.pub 复制到客户端,与用户的密钥 user_key 保存在同一个目录即可。

十、客户端安装 CA 公钥为了让客户端信任服务器证书,必须将 CA 签发服务器证书的公钥 host_ca.pub,加到客户端的 /etc/ssh/ssh_known_hosts 文件(全局级别)或者 ~/.ssh/known_hosts 文件(用户级别)。具体做法是打开 ssh_known_hosts 或 known_hosts 文件,追加一行,开头为 @cert-authority *.example.com,然后将 host_ca.pub 文件的内容(即公钥)粘贴在后面,大概是下面这个样子。东莞新房买房http://dg.goufang.com/

@cert-authority *.example.com ssh-rsa AAAAB3Nz…XNRM1EX2gQ==

上面代码中,.example.com 是域名的模式匹配,表示只要服务器符合该模式的域名,且签发服务器证书的 CA 匹配后面给出的公钥,就都可以信任。如果没有域名限制,这里可以写成。如果有多个域名模式,可以使用逗号分隔;如果服务器没有域名,可以用主机名(比如 host1,host2,host3)或者 IP 地址(比如 11.12.13.14,21.22.23.24)。然后,就可以使用证书,登录远程服务器了。

ssh -i ~/.ssh/user_key user@host.example.com

上面命令的 -i 参数用来指定用户的密钥。如果证书与密钥在同一个目录,则连接服务器时将自动使用该证书。

十一、废除证书废除证书的操作,分成用户证书的废除和服务器证书的废除两种。服务器证书的废除,用户需要在 known_hosts 文件里面,修改或删除对应的 @cert-authority 命令的那一行。用户证书的废除,需要在服务器新建一个 /etc/ssh/revoked_keys 文件,然后在配置文件 sshd_config 添加一行,内容如下。

RevokedKeys/etc/ssh/revoked_keys

revoked_keys 文件保存不再信任的用户公钥,由下面的命令生成。

ssh-keygen -kf /etc/ssh/revoked_keys -z 1 ~/.ssh/user1_key.pub

上面命令中,-z 参数用来指定用户公钥保存在 revoked_keys 文件的哪一行,这个例子是保存在第 1 行。如果以后需要废除其他的用户公钥,可以用下面的命令保存在第 2 行。

Liunx PEM证书生成与远程登录(记录篇) 我们利用ssh-keygen工具进行证书的公私钥生成,然后将公钥上传到远程服务器后,客户端通过私钥进行登录操作。一般对于生产环境中为安全性考虑,推荐禁用ssh的账号密码方式登录。 阅读详情

相关推荐

Linux创建新用户并使用证书远程登录

因业务需要,需要在服务器上创建多用户,方便多人维护,那么可以利用证书登录创建多用户登录,然后用户如果需要root权限再手动切换即可,下面简单介绍下在Linux上如何进行多用户创建以及使用证书登录。

Rakers1024的博客 1028

Linxu配置远程SSH证书,以及GITLAB_CI远程

生成id_rsa私钥,和id_rsa.pub公钥;

写好每一行代码 306

不止是回退SDK:深入解读UE5.2编译时那个烦人的C4756警告与INFINITY宏的变迁

本文深入解析了UE5.2源码编译时出现的C4756警告及其背后的技术原因,探讨了Windows SDK中INFINITY宏的变迁对Unreal Engine的影响。文章详细介绍了微软修改INFINITY定义的技术考量,并提供了UE5.2应对此类问题的灵活解决方案,包括通过BuildConfiguration.xml文件精确控制工具链版本,确保构建系统的可重复性和可配置性。

weixin_27180827的博客 310

Linux服务器配置ssh证书登录

Linux服务器ssh登录有密码登录和证书登录两种。如果使用密码登录,容易遭受密码泄露或者暴力破解,我们可以使用ssh证书登录并禁止使用密码登录,ssh证书登录通过公钥和私钥来完成整个连接过程,公钥保存在服务器上,私钥保存在本地。

清瞳清的博客 4162

蓝桥杯单片机省一经验分享1:基础篇.含详细代码与应试技巧

含详细代码、驱动修改与应试技巧

qq_53529450的博客 1万+

一篇文章将三极管讲透:三极管从原理到应用,从参数到特性,从入门到精通

晶体三极管(Transistor)是一种半导体电子器件,也是电子工程中最基本的元件之一。它有三个区域,分别是P型半导体,N型半导体和P型半导体,从而形成PNP型晶体三极管或者NPN型晶体三极管。

学习帮的博客 9万+

SSH证书登录实现步骤

一、SSH证书登录步骤: 客户端在本地生成SSH证书:包括公钥和私钥,一般创建私钥时应该设置好自己的密码,然后将私钥妥善保存在客户端,防止被盗。 服务器添加公钥白名单:客户端将公钥上传至服务器,或者交给运维人员,然后将公钥添加至ssh的信任列表中就可以了。 用户可以用一个私钥登录不同服务器,只要在想登录的服务器中添加自己的公钥即可。 二、客户端创建私钥和公钥 1、在客户端运行命令 ssh-ke...

iong_l的专栏 4328

逆向Shopee签名机制:从参数分析到稳定采集方案

本文深入解析了Shopee签名机制的逆向过程,从参数分析到稳定采集方案的实现。通过抓包定位关键参数`sap-ri`和`x-sap-sec`,还原了签名生成算法,并提供了Python实现代码。文章还分享了反反爬策略、性能优化技巧及长期维护建议,帮助开发者构建稳定的Shopee数据采集方案。

weixin_27722377的博客 672

SSH 证书登录

网道(WangDoc.com),互联网文档计划 SSH 是服务器登录工具,一般情况下都采用密码登录或密钥登录。 但是,SSH 还有第三种登录方法,那就是证书登录。某些情况下,它是更合理、更安全的登录方法,本文就介绍这种登录方法。 目录 [隐藏] 非证书登录的缺点 证书登录是什么? 证书登录的流程 生成 CA 的密钥 CA 签发服务器证书 CA 签发用户证书 服务器安装证书 服务器安装 CA 公钥 客户端安装证书 客户端安装 CA 公钥 废除证书 参考链接 非证书登录的缺点 密

追光少年的博客 1万+

逆变器母线电容选型与均压电阻设计实战指南

本文为逆变器母线电容选型与均压电阻设计提供了实战指南。文章从工程角度出发,详细解析了母线电容耐压值、容值的计算方法,并重点强调了纹波电流热设计的重要性。同时,深入探讨了串联电容均压电阻的设计原则与功率计算,通过5.5kW变频器案例,系统演示了从参数确定到最终选型的完整流程,旨在帮助工程师设计出稳定可靠的逆变器系统。

weixin_29299807的博客 291

matlab 用m_map画地形水深图

clear,clc %投影 m_proj('albers equal-area','lat',[5 43],'long',[105 125],'rect','on'); %加载水深文件 [CS,CH]=m_etopo2('contourf',[-7000:500:3000],'edgecolor','none'); %绘制高分辨率陆地和海岸线 m_gshhs_h('patch',[0.1 0.9 ...

qq_44913577的博客 9511

Linux下如何开启允许root用户远程登录

如何在Linux下放开root权限用户进行远程登录并进行文件下载,为此写了篇总结。。

mini小新的博客 1万+

AM驱动架构—优质Mini-LED显示技术解决方案

(VR)和增强现实(AR)设备:MiniLED背光驱动方案适用于虚拟现实和增强现实设备中的显示技术,通过高亮度和高对比度的显示效果,创造更逼真的虚拟体验此外,MiniLED背光还能够实现更快的响应速度,减少图像残影,使得用户的动作在虚拟环境中更加流畅自然。以其出色的性能和广泛的应用前景备受关注是实现MiniLED显示效果的重要环节。1)更高的亮度和对比度:尺寸更小,可以在同样面积的显示屏上配置更多的LED,并且通过独立控制每一个MiniLED,可以实现更高的亮度和更细致的对比度,使得显示画面更加鲜明清晰。

isweekDN的博客 2762

linux的ssh远程登录

文章目录linux的ssh远程登录简介示例 linux的ssh远程登录 简介 通常在服务器的字符界面,进行选取,复制,粘贴,翻页很不方便,所以经常就要借助SSH(安全外壳协议)远程操作和管理系统,不仅方便而且安全可靠 示例 登录计算机 查询ssh是否安装 rpm -qa | grep ssh 如果没有安装ssh,可以输入以下命令进行安装 yum install -y openssh-server 查看ssh的运行状态 systemctl status sshd centos7安装时默认是已经安

qq56hm的博客 1201

[PCIe5.0] 2.2.7.1 TPH Rules

TPH 机制通过硬件提示优化数据流,适用于高性能计算和存储场景。

系统固件工程师 349

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Linux中的远程登录服务

1.实验环境两台单网卡的主机一台为服务器,主机名为westos_system,ip地址为192.168.2.100一台为客户端,主机名为westos_client,ip地址为192.168.2.200下图所示为服务器主机下图所示为客户端主机 2.ssh命令ssh -l root 192.168.2.100 //登录服务器出现以下界面表示成功登录服务器 ssh -Xl root 192.168.2.100 //开启图形登录服务

my990209的博客 2142

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SSH原理与运用(一):远程登录

记录一下,方便日后查看 SSH原理与运用(一):远程登录

Climber813 4425

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ssh 远程登录 linux

动一下小手点一下赞。谢谢! 你的赞就是我更新的动力。SSH(Secure Shell)是一种用于远程登录和执行命令的网络协议。它提供了加密和安全的通信通道,可以确保数据在网络上的传输过程中不被恶意攻x者窃取或篡改。SSH在Linux系统中得到了广泛的应用,成为了远程管理和操作Linux服务器的标准工具。在本文中,将详细介绍...

weixin_41420957的博客 140

MySQL:SSL远程登录

原文地址:http://www.2cto.com/database/201310/252451.html MySQL:SSL远程登录 环境:linux mint 15  安装openssl:  1 sudo apt-get install openssl 查看mysql的ssl是否开启了(在mysql 命令行中):  1 show variables like

雜貨鋪 3378

Ssh 证书验证登录

一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。 密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只...

diandunmeng2822的博客 249

SSH远程登录原理与运用

SSH是每一台Linux电脑的标准配置。   随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用。   SSH具备多种功能,可以用于很多场合。有些事情,没有它就是办不成。本文是我的学习笔记,总结和解释了SSH的常见用法,希望对大家有用。   虽然本文内容只涉及初级应用,较为简单,但是需要读者具备最基本的”She

熊哥club的专栏 603

Linux系统-- SSH证书登录

本地客户端远程证书登录服务端 1、客户端生成证书:私钥和公钥, ssh-keygen -t rsa -C"youremail@example.com”(可在生成的过程中提示时输入密码)。 2、服务端/root/.ssh/目录新建authorized_keys文件,将客户端生成的公式拷入 chmod 700 ~/.ssh/ chmod 600 ~/.ssh/aut...

treehouse的博客 1083

linux基础&远程登录中的一种重要管理工具方式----SSH✍

什么是远程登录? 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。 简单理解为 你现在并未在系统服务器旁边,远程登陆后,就像坐在服务器前操控一样。 远程连接服务器会具有那些功能? (1)分享主机运算能力 (2)服务器类型有限度开放连接 (3)工作站类型,只对内网开放 常见的远程管理工...

✍千里之行,始于足下 ^,^ 3119

linux ssh 证书登录不了,linux ssh证书登录

客户端建立私钥和公钥在客户端终端运行命令ssh-keygen -t rsarsa是一种密码算法,还有一种是dsa,证书登录常用的是rsa。假设用户是test,执行 ssh-keygen 时,才会在home目录下的 .ssh/ 目录里面产生所需要的两个 Key ,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)。另外就是私钥的密码了,如果不是测试,不是要求无密码ssh,那么对于pass...

weixin_42134054的博客 392
上一篇: Linux 远程命令行工具Putty菜单介绍
购房网推广
博客等级 码龄6年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值