怎么给自己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的账号密码方式登录 阅读详情

相关推荐

安卓15_ROM修改定制化_____修改rom的前提条件 去除各种验证 安卓设备通用

通过博文了解💝💝💝 1-------💝💝💝了解安卓设备的启动流程与核心验证机制 2-------💝💝💝了解安卓设备修改rom中的各种验证机制以及对应的去除方法 3-------💝💝💝了解avb验证与dm验证的本质区别与对应的操作方式 4-------💝💝💝修改rom前的循序步骤 避免验证机制导致的不开机

小马哥的专栏 468

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

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

写好每一行代码 302

A计权声压级计算代码和实例(matlab代码)

根据三分之一频程划分的24个子频带的声压级,计算A计权声压级。代码打包成函数,可以调用。代码有详细的注释,有计算的实例。

Linux服务器配置ssh证书登录

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

清瞳清的博客 4125

SSH证书登录实现步骤

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

iong_l的专栏 4310

SSH 证书登录

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

追光少年的博客 1万+

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

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

mini小新的博客 1万+

linuxssh远程登录

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

qq56hm的博客 1196

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的博客 2135

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

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

Climber813 4423

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

雜貨鋪 3374

ssh 远程登录 linux

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

weixin_41420957的博客 131

Ssh 证书验证登录

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

diandunmeng2822的博客 245

配置SSH服务器使用证书登录

为什么使用证书登录?通过SSH(Secure Shell)登录Linux服务器认证方式有密码和证书两种,证书登录更加安全。 ========================================================================= 流程: 创建允许登录的用户及用户组;配置服务器上的sshd_config;客户端生成证书的私钥与公钥对;服务器添加公钥;使用私钥登录服务器及其FTP =============================================

xjtu_yyl的博客 638

SSH 证书登录教程

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 LinuxSSH 是服务器登录工具,提供密码登录和密钥登录。但是,SSH 还有第三种登录方法,那就是证书登录。很多...

easylife206的专栏 2709

SSH证书登陆(简单解释)

“公私钥”认证方式简单的解释: 首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa),然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥。在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以免密码登录了。  在本地产生私钥和公钥: $ ssh-keyg

syj0301的专栏 684

linux ssh证书登录

ssh证书登录方法

ziqibit的博客 4045

服务器实现ssh证书登录

PermitRootLogin 将值修改为 without-password //允许root登录,但只允许证书登录。提示输入证书的密码,可以留空,建议输入,如果输入了,则需要再次确认,记住这个证书密码(证书再加一层密码,这样即使证书丢失,也有第二个保险,有个缓冲时间)当使用证书登录成功后,编辑配置文件 vi /etc/ssh/sshd_config。建议先用证书登录,成功后再禁止密码登录,以免出错导致要重装系统。

lsj1143956304的博客 1620

linux服务器登录认证 ssh证书

linux服务器使用证书登录第一步:生成本地私钥和公钥第二步:将公钥放置在服务器上第三步:配置客服端和服务器端文件其他配置信息 第一步:生成本地私钥和公钥 Administrator@PC-20200101 MINGW64 /d/AUPDATEONLINE/SSHKEY $ ssh-keygen -t rsa -C "9***3@qq.com" Generating public/private rsa key pair. Enter file in which to save the key (/c/Us

weixin_44347152的博客 1609
上一篇: Linux 远程命令行工具Putty菜单介绍
购房网推广
博客等级 码龄6年 1粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值