SSH证书登录实现步骤

一、SSH证书登录步骤:

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

二、客户端创建私钥和公钥

1、在客户端运行命令

ssh-keygen -t rsa  -f  ~/.ssh/id_rsa_web1 -C "key for web1"

-b:指定密钥长度;
-C:添加注释;
-e:读取openssh的私钥或者公钥文件;
-f:指定用来保存密钥的文件名,不设置路径默认保存在用户~/.ssh/目录下;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-m 参数指定密钥的格式,PEM(也就是RSA格式)是之前使用的旧格式
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型,有rsa1(SSH1),dsa(SSH2),ecdsa(SSH2),rsa(SSH2)等类型, 证书登录常用的是的是rsa类型

2、运行命令会提示输入密码,如果测试不需要密码可以直接敲回车
在这里插入图片描述
3、最后生成两个文件,分别是 id_rsa_web1(私钥)和id_rsa_web1.pub(公钥) :

私钥

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA3miSzJOGnDHW8c/4RpmrLwlUFzQqYTeekzqdl8EiyEr+QVae
…中间内容忽略…
R3ts4WhP0MOwldynTdEfTDYqZW/Z8OjuXGpCblD2tcsXsygGgvQ7
-----END RSA PRIVATE KEY-----

公钥

ssh-rsa AAAAB3NzaC1yQD…省略…mZnKat8ibmDf key for web1

4、Windows可以下载GitBash工具运行命令行
https://git-scm.com/download/win

三、服务器SSH配置

1、使用root用户打开ssh配置文件,修改前养成备份的习惯。

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
vim /etc/ssh/sshd_config

配置修改如下:

#禁用root账户登录,非必要
PermitRootLogin no

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
StrictModes no

# 是否允许用户使用密钥登入系统,仅version 2。
RSAAuthentication yes
PubkeyAuthentication yes
# 公钥白名单数据保存位置
AuthorizedKeysFile %h/.ssh/authorized_keys

# 禁用密码登录
PasswordAuthentication no

2、将客户端秘钥上传至服务器

scp ~/.ssh/id_rsa_web1.pub test@192.168.1.112:~/.ssh/

test 目标服务器用户名,192.168. 是目标服务器地址,: 后面是保存路径。

如果从远程下载 将两个地址格式互换一下(window同理)

scp root@192.168.1.10:~/.ssh/id_rsa_web1.pub ~/.ssh/

3、将公钥写入白名单

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

cat 打印公钥内容
>> 将内容直接追加到authorized_keys文件末尾。也可以使用vim编辑直接将公钥内容粘贴到末尾。

authorized_keys内容如下:

ssh-rsa AAAAB3N+hFt…省略…8IiPybRJdPMsur/NeN3U8t test
ssh-rsa AAAAB3NzaC1yQD…省略…mZnKat8ibmDf key for web1

4、编辑好之后重启ssh服务

/etc/init.d/ssh restart

四、客户端SSH证书连接

1、使用ssh证书登录服务器

ssh -i ~/.ssh/id_rsa_web1.pub test@192.168.1.112

-i: 指定私钥路径

2、使用scp命令

scp -i ~/.ssh/id_rsa_web1.pub ~/1.txt test@192.168.1.112:~

3、 修改客户端ssh配置文件,设置默认的证书

#添加证书地址
IdentityFile ~/.ssh/id_rsa

五、不同服务器单独配置证书

1、配置host文件

vi /etc/hosts
(windows 目录 C:\Windows\System32\drivers\etc,需要右击用管理员权限运行记事本)

内容如下:

192.168.1.112 web1.com
192.168.1.113 web2.com

2、编辑ssh配置文件(windos在C:\Users\用户.ssh文件夹下)

vim /etc/ssh/sshd_config
(windos 在C:\Users\用户\.ssh文件夹下)

内容如下:

Host web1.com
    IdentityFile ~/.ssh/id_rsa_web1
    User test
Host web2.com
    IdentityFile ~/.ssh/id_rsa_web2
    User root

Host 为要登录的服务器
IdentityFile 为证书私钥地址
User 为登录的用户
重启服务后(window不用重启),登录服务器就不需要指定证书地址了

六、证书加密方式遇到的问题

1、在使用rsa加密方式生成私钥后,无法导入xshell工具中,或报错:Resource temporarily unavailable. Authentication by key (/Users/youname/.ssh/id_rsa) failed (Error -16). (Error #35)。
打开私钥文件对比发现,生成的私钥第一行变成了“BEGIN OPENSSH PRIVATE KEY” 而不是“BEGIN RSA PRIVATE KEY”,新版本ssh命令,使用rsa加密时,默认都是OPENSSH格式。

解决方式
使用命令 ssh-keygen -m PEM -t rsa -b 4096 可生成旧版本格式。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在2021年,使用Ubuntu搭建SSH证书登录是一种安全可靠的方法。SSH证书是用于验证用户身份的一种方式,相比于传统的用户名和密码认证方式更加安全。 在Ubuntu上生成SSH证书步骤通常如下: 1. 在终端中运行ssh-keygen命令来生成公钥和私钥,可以指定算法、密钥长度等参数。 2. 设置密码以保护私钥的安全。 3. 在~/.ssh目录下生成的id_rsa.pub文件中找到公钥,将其复制。 4. 在目标服务器上创建一个新用户,例如使用adduser命令。 5. 将复制的公钥粘贴到目标服务器新用户的~/.ssh/authorized_keys文件中。 6. 修改目标服务器上SSH配置文件/etc/ssh/sshd_config,确保PubkeyAuthentication设置为yes。 7. 重启SSH服务以使修改生效。 使用证书登录后,你可以删除或禁用传统的用户名和密码登录方式,提高系统的安全性。此外,使用证书登录在多台服务器之间切换时也更加方便,无需每次输入密码。 在Ubuntu中管理SSH证书也比较简单。你可以使用ssh-add命令将私钥添加到SSH agent中,这样可以在登录时自动使用证书进行身份验证。如果需要撤销或更改证书,可以使用ssh-keygen命令重新生成新的密钥对,并更新目标服务器的authorized_keys文件。 总之,Ubuntu上使用SSH证书登录是一种安全、高效的身份验证方式,可以增加系统的安全性和便利性。在2021年以及将来的时间里,它仍然是一种被广泛使用的方法。 ### 回答2: Ubuntu系统中,SSH证书是用于身份验证和安全连接的一种机制。2021年的Ubuntu系统中使用SSH证书仍然是一种常见且安全的方法。 SSH证书通常由公钥和私钥组成。公钥部分存储在目标服务器的".ssh/authorized_keys"文件中,而私钥则保存在客户端的".ssh"文件夹中。在使用SSH登录远程服务器时,客户端会使用私钥进行加密,服务器使用公钥进行解密和验证身份。 使用SSH证书的好处是它允许用户在无需输入密码的情况下进行远程登录,提供了更高的安全性。同时,SSH证书还可以防止中间人攻击,因为私钥只存在于客户端,不会在网络中传输。 生成SSH证书的方法很简单。首先,在目标服务器上创建一个新的密钥对,使用命令"ssh-keygen"生成公钥和私钥。然后将公钥复制到服务器的"authorized_keys"文件中。最后,将私钥复制到客户端的".ssh"文件夹中,确保私钥的权限设置正确。 使用SSH证书进行远程连接时,只需提供私钥的路径和用户名即可,无需输入密码。这样可以方便、安全地进行远程操作。 总的来说,Ubuntu系统中的SSH证书仍然是一种可靠且广泛应用的身份验证机制。通过生成公钥和私钥,并在服务器和客户端进行相应配置,可以实现安全、免输入密码的远程连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值