windows使用ssh免密登录linux服务器及vscode配置

为什么要使用秘钥登录

ssh默认使用密码登录,但是用密码登录存在很多问题,比如密码太复杂不好记、手动输入很麻烦等等。不过最重要的原因还是使用密码登录不够安全,容易被中间人攻击。

密码登录的流程:

客户端 服务器 发起登录请求 1 生成公钥 2 发送生成的公钥 3 使用公钥加密登录密码 4 发送登录密码 5 校验登录密码 6 密码正确:允许登录 密码错误:拒绝登录 返回登录结果 7 客户端 服务器

这个过程是有漏洞的,当客户端向服务端发起请求的时候,攻击人就可能拦截请求,冒充远程主机,然后返给客户端自己伪造的公钥,客户端使用攻击人的公钥进行加密,攻击人拿到密码之后使用自己的私钥解密,就能获取到客户端的密码了。

一、ssh免密登录原理

1.1. 对称加密与非对称加密

对称加密算法
非对称加密算法

对称加密算法 就是发送方和接收方使用同一个秘钥对数据进行加密解密。因为对称加密算法加解密的速度很快,所以适用于传输大量数据的场景。
非对称加密算法 :需要发送方和接收方使用公私钥密钥对进行加密解密,私钥由生成秘钥的一方管理,公钥可以发送给信任请求通信的其他人。发送方使用公钥对内容加密,接收方使用私钥进行解密,这样私钥不会暴露在网络中,安全性大大增加。

SSH连接过程中的两个阶段使用了非对称加密。
一个是在密钥交换阶段,服务器和客户端都生成了自己临时的公钥和私钥,用于计算出同一个用于后续加密通信内容的会话密钥。另外一个就是在用户认证阶段,利用只有匹配的私钥可以唯一解密公钥加密的内容这一特点,通过客户端的公钥私钥对验证客户端的身份。

1.2. 免密登录原理

免密登录的流程:

客户端 服务器 生成公私钥密钥对 ssh-keygen -t rsa 1 公钥 私钥 将公钥拷贝到服务器 scp -p 目录/.ssh/id_rsa.pub root@<ip>:/root/.ssh/authorized_keys 2 公钥 发起登录请求 3 验证客户端身份, 在authorized_keys中匹配到 客户端的公钥,如果存在公钥, 随机生成字符串abcd, 使用公钥加密,得到字符串A 4 发送字符串A给客户端 5 使用私钥对字符串A 进行解密得到字符串abcd 6 发送abcd+SessionKey,通过MD5加密 7 将自己对abcd+SessionKey 加密后的结果与客户端发送 的结果进行比对 8 比对结果相同:允许免密登录 比对结果不同:拒绝免密登录 返回登录结果 9 客户端 服务器

二、ssh免密登录服务器

2.1. 制作秘钥

# 在本机创建秘钥
λ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\13372/.ssh/id_rsa):  C:\Users\13372/.ssh/id_rsa1 # 秘钥保存的位置,可自定义文件名,这里的文件名为id_rsa1  
Enter passphrase (empty for no passphrase): # 输入秘钥密码,或者直接按Enter留空
Enter same passphrase again: # 再次输入秘钥密码
Your identification has been saved in C:\Users\13372/.ssh/id_rsa1.  # 私钥文件
Your public key has been saved in C:\Users\13372/.ssh/id_rsa1.pub.  # 公钥文件
The key fingerprint is:
SHA256:TqotKsiVYl0erronHnUIr/WtjKAeit5L2VJi3OQGo4U 13372@DESKTOP-UJ28B9E
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|  .              |
| E + .           |
|  * Bo           |
| ..O=*. S        |
| o=+Oo.+         |
|+=o+.o...        |
|*o*o=o.          |
|BB*=o+.          |
+----[SHA256]-----+

2.2 上传公钥

# 1. 通过scp发送公钥到服务器
scp -p C:\Users\13372/.ssh/id_rsa1.pub root@<ip>:/root/.ssh/authorized_keys

# 2. 使用ssh方式连接到服务器
scp -p C:\Users\13372/.ssh/id_rsa1.pub root@<ip>:/root/.ssh/id_rsa.pub # 发送公钥到服务器
ssh username@ip -p port  # 标准命令,输入后会提示输入密码
cd ~/.ssh  # 进入到ssh目录
cat id_rsa.pub >> authorized_keys # 将公钥追加到authorized_keys 文件

# 3. 自动上传公钥
# 参数说明: -i 指定公钥文件
ssh-copy-id -i C:\Users\13372/.ssh/id_rsa1.pub user@ip

2.3 权限设置

chmod 600 authorized_keys # 只有拥有者可读写,其他人不可读写执行
chmod 700 ~/.ssh # 只有拥有者有读、写、执行权限

2.4 配置设置

# 检查 /etc/ssh/sshd_config 文件
RSAAuthentication yes  # 启用RSA认证,默认为yes
PubkeyAuthentication yes  # 启用公钥认证,默认为yes
PermitRootLogin yes # 允许root用户ssh登录,默认为yes

PasswordAuthentication no # 关闭密码登录,根据需要设置

# 重启ssh服务
service sshd restart

三、配置VsCode使用秘钥链接服务器

3.1 安装remote远程连接插件

安装插件

3.2 配置远程连接

在这里插入图片描述
点击配置,选择自己的ssh配置文件
在这里插入图片描述
配置参数:
Host: 远程登录的服务器ip
IdentityFile:私钥(private key)文件
ForwardAgent:支持SSH免密码连接第三方远程服务器

在这里插入图片描述
配置好后,在左侧会出现服务器信息
点击服务器右侧的加好,发现已经可以直接登录了
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值