生成ssh密钥,使用ssh连接linux系统

ssh密钥大概介绍

1、密钥在哪里生成(客户端/服务器)?

客户端/服务器都可以生成,但是要考虑传输方便和安全问题
根据自己的使用情况密钥传输,怎么方便怎么来,

  • 一对一:一台PC连接一台Linux服务器,我喜欢在PC上生成,在传密钥给Linux。你也可以在Linux生成然后传回来
  • 一对多:如果一台PC访问多台Linux服务器,就在PC上生成密钥对,这样就可以使用同一密钥对访问所有服务器。
  • 多对一:如果一台Linux服务器,多个PC端需要连接这台服务器,那么你可以在这台Linux服务器上生成密钥对
  • 多对多:拆分成一对多 噜噜噜~~

2、密钥生成是什么样子的?

ssh (生成密钥、密钥传输、配置连接、连接服务)过程

1、生成密钥

这里我用测试的Linux服务器来演示,每次生成会产生一个公钥和一个私钥,两个密钥是一对相互关联组成的

公钥(public key):公钥用于加密数据或验证签名,一般存储在远程服务器上进行身份验证。

私钥(private key):私钥用于解密数据或生成数字签名,一般存储在PC端进行连接,并且必须严格保密。

ssh-keygen 命令有多个可选选项,其中一些常用选项包括:

  • -t:指定要生成的密钥类型,如 rsa、dsa、ecdsa、ed25519 等。
  • -b:指定生成密钥的位数,通常用于RSA密钥,如 -b 2048。
  • -C:在生成密钥时添加注释,可用于识别密钥的用途或所有者。
  • -f:指定生成密钥的文件路径和名称。
  • -N:设置用于保护私钥的密码,可以为空。
  • -q:静默模式,减少输出信息。
  • -y:从私钥中提取公钥并打印到标准输出。
  • -h:显示命令的使用帮助信息。

输入下面命令就会生成(公钥和私钥)

ssh-keygen

最终生成完是这样的👇

C:\Users\17569\Desktop\ssh>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\17569/.ssh/id_rsa): 47.95.178.146
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in 47.95.178.146.
Your public key has been saved in 47.95.178.146.pub.
The key fingerprint is:
SHA256:ST7ke0dkXzI5UvM1KKqEABT39KTRs239D70eyTlYWmg 17569@xk-Lenovo
The key's randomart image is:
+---[RSA 3072]----+
|.+o. o..      +..|
|  ..o =o   . o +o|
|    .o..* o = = o|
|     . B = + o.= |
|      . S   oEoo |
|       . o ..o*.o|
|        . . .oo*.|
|         . .   oo|
|              .. |
+----[SHA256]-----+

C:\Users\17569\Desktop\ssh>

可能看到一些提示,如果没有就跳过


提示一:输入保存密钥的文件:Enter file in which to save the key

让我们输入生成密钥的名称,我这里输入我的服务器IP方便记住

Enter file in which to save the key (C:\Users\17569/.ssh/id_rsa): 47.95.178.146
翻译:
输入保存密钥的文件(C:\Users\17569/.ssh/id_rsa): 47.95.178.146

提示二、输入密码短语:Enter passphrase (empty for no passphrase)

让我们输入密码短语以增加安全性,也可以直接按回车键跳过密码短语,输入密码短语是不显示字符的哦

不建议输入,如果输入密码短语,每次使用密钥连接都需要在输入密码短语确认
不建议输入,如果输入密码短语,每次使用密钥连接都需要在输入密码短语确认
不建议输入,如果输入密码短语,每次使用密钥连接都需要在输入密码短语确认

Enter passphrase (empty for no passphrase):
翻译:
输入密码短语(空表示无密码短语):

1.3、生成密钥提示:Enter same passphrase again

输入两次,确保密码短语是正确的,在操作中输入不一致就提示:密码不匹配。再试一次。

Enter same passphrase again:
翻译:
再次输入相同的密码:

1.4、生成密钥提示:Passphrases do not match. Try again

输入两次密码短语是错误的,注意大小写和数字键盘是否开启

Passphrases do not match.  Try again.
翻译:
密码不匹配。再试一次。

2、密钥传输

生成后在执行的当前目录下会生成两个文件
默认路径如下:

  • windows电脑对应的路径为:C:\Users\你的用户名.ssh
  • MAC/linux对应的路径为:~/.ssh

生成的密钥对有两个文件:id_rsa(私钥文件)和 id_rsa.pub(公钥文件)

私钥:47.95.178.146
公钥:47.95.178.146.pub

公钥(public key):公钥用于加密数据或验证签名,一般存储在远程服务器上进行身份验证。

私钥(private key):私钥用于解密数据或生成数字签名,一般存储在PC端进行连接,并且必须严格保密。

在这里插入图片描述

方法一:使用 SSH 拷贝公钥到远程服务器(适用于Mac、Linux电脑)

1.使用以下命令将本地公钥复制到远程服务器:

然后会要求你输入密码,就会将公钥自动添加到远程服务器的 ~/.ssh/authorized_keys 文件中

ssh-copy-id 连接用户名@服务器ip

2.如果你的服务器端口不是默认的 22 端口,可以使用 -p 参数指定端口号:
ssh-copy-id -p 28256 连接用户名@服务器ip

方法二:手动上传公钥到服务器(适用于Windows、Mac及linux电脑)

1.使用 scp 命令传输密钥

这样也可以把 复制到远程服务器的 ~/.ssh/authorized_keys 文件中。

scp 公钥文件名.pub 连接用户名@服务器ip:~/.ssh/authorized_keys

示例:

scp 47.95.178.146.pub root@47.95.178.146:~/.ssh/authorized_keys

成功如下👇

C:\Users\17569\Desktop\ssh>scp 47.95.178.146.pub root@47.95.178.146:~/.ssh/authorized_keys
root@47.95.178.146's password: [此处输入密码,密码已隐藏]
47.95.178.146.pub                                                     100%  570     9.3KB/s   00:00

C:\Users\17569\Desktop\ssh>


3、配置连接

检查一:linux服务端:是否开启密钥连接

使用下面命令检查是否开启密钥连接,如果没有或者前面有个#都不行

cat  /etc/ssh/sshd_config | grep PubkeyAuthentication
情况1:【空白】
使用vim写入
情况2:PubkeyAuthentication no
使用 vim 改成 yes
情况3:#PubkeyAuthentication yes
使用 vim 去除 “#” 号

正确情况如下👇

[root@iZ2ze56a8gwg4w4scwap4qZ ~]# cat  /etc/ssh/sshd_config | grep PubkeyAuthentication
PubkeyAuthentication yes

[root@iZ2ze56a8gwg4w4scwap4qZ ~]#

检查二:linux服务端:公钥文件位置是否正确

使用下面命令检查是否开启密钥连接

cat  /etc/ssh/sshd_config | grep AuthorizedKeysFile
情况1:【空白】
使用vim写入
情况2:AuthorizedKeysFile
使用 vim 添加路径 .ssh/authorized_keys
情况3:#AuthorizedKeysFile .ssh/authorized_keys
使用 vim 去除 “#” 号
情况4:AuthorizedKeysFile .ssh/abcdef/authorized_keys
使用 vim 修改文件里面的路径 或者 把密钥文件移动位置

正确情况如下👇

[root@iZ2ze56a8gwg4w4scwap4qZ ~]# cat  /etc/ssh/sshd_config | grep AuthorizedKeysFile
AuthorizedKeysFile .ssh/authorized_keys

[root@iZ2ze56a8gwg4w4scwap4qZ ~]#

(可选)配置一:PC服务端:快速连接

打开目录:C:\Users\你的用户名.ssh
创建一个文件:config,下面是内容👇

Host 连接名称
    HostName 服务器ip
    User 连接用户名
    IdentityFile ~/.ssh/id_rsa[密钥位置]
    Port 22

示例:

Host al
    HostName 47.95.178.146
    User root
    IdentityFile ~/.ssh/al
    Port 22

3、连接服务

方法一:使用ssh -i 密钥连接

ssh -i 密钥文件位置 连接用户名@服务器ip

示例:

ssh -i id_rsa root@47.95.178.146

连接示例:

C:\Users\17569\Desktop\ssh>ssh -i 47.95.178.146 root@47.95.178.146

Welcome to XiaoKang's world!
Last login: Fri May 31 23:30:10 2024 from 116.249.141.191
[root@iZ2ze56a8gwg4w4scwap4qZ ~]# 

方法一:使用ssh config快速连接

使用在 “config” 文件中配置的连接名称直接连接

ssh 连接名称

示例:

ssh al

连接示例:

C:\Users\17569\Desktop\ssh>ssh al

Welcome to XiaoKang's world!
Last login: Fri May 31 23:54:52 2024 from 116.249.141.191
[root@iZ2ze56a8gwg4w4scwap4qZ ~]#

参考原文链接:https://blog.csdn.net/qq_41308872/article/details/138306315

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米汤爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值