linux公私钥

公钥相当于锁,用于加密

私钥相当于钥匙,用于解密

密钥对,代替密码登录,支持代码自动化

1.用户生成密钥对
用户通过 ssh-keygen 命令生成密钥对。

 
2.公钥上传服务器
将公钥内容上传到服务器的指定位置。


3.客户端用私钥签名
客户端连接服务器时,用私钥对随机数据进行签名。


4.服务器用公钥验证
服务器通过公钥验证签名,验证通过允许登录。

准备的环境: 一台windows电脑,装了xshell连接阿里云服务器,服务器公网ip是47.99.46.71

又在这个电脑装了git bash模拟本地的linux环境(也可以用wsl)

在git bash里运行:

ssh-keygen -t rsa -b 4096 -C "singer"

秘钥类型rsa,长度4096bit,命名为singer

第一个确认是 默认存放路径

第二个是设置密码,直接回车是不写密码

第三个是确认密码

如果私钥id_rsa不是权限为600,访问对方服务器的时候会被SSH拒绝登录

输入ssh-copy-id -i /root/.ssh/id_rsa.pub root@47.99.46.71 将公钥传输给对方

回车后输入登录对方的密码

 如果只有一个密钥对,可以不指定,直接用ssh-copy-id root@47.99.46.71

比如我这里只有id_rsa和id_rsa.pub这一对密钥对

传上去时要你输入对方密码

再次验证下,是否登录不再需要密码了:

ssh root@47.99.46.71

你本地的 id_rsa.pub(公钥)→ 被 ssh-copy-id 复制 → 粘贴到远程服务器 root 用户的 ~/.ssh/authorized_keys 文件中。
这个文件就是远程服务器用来验证 “免密登录” 的核心文件:当你用 ssh root@47.99.46.71 登录时,服务器会检查这个文件里有没有你的公钥,有就允许免密登录。

修改下私钥的权限,看还让我们登录不:

chmod 644 id_rsa (正常应该是600)

ssh root@47.99.46.71

发现又要你输密码了

改回去

cd /root/.ssh/
chmod 600 id_rsa

ssh root@47.99.46.71 发现又能免密登录了

在xshell里的编辑秘钥登录界面是:

新建会话-用户身份验证-public key勾选,password取消--设置--

右边三个点--导入--路径是你之前ssh-kegen -t rsa -b 4096 -C "singer" 下一步显示的存放路径

导入id_rsa私钥

再输入目标主机

最后只要输入用户名root就能登录了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值