VS Code使用ssh密钥连接linux服务器

VS Code使用ssh密钥连接linux服务器

环境介绍

  • Ubuntu20.04LTS(虚拟机安装)
  • windows10_1909客户机
  • VS Code预览版
  • Xftp7

准备工作

安装VS Code扩展插件

在VS Code的扩展商城中搜索Remote Development插件进行安装:

使用VS Code远程登陆

1.选择配置文件进行编辑:
  安装好扩展插件之后,左侧菜单栏会出现远程连接的图标,点击图标可以看到当前的远程选项,点击齿轮按钮在右侧弹窗中选择用户文件夹下config文件进行编辑:
  2.编辑配置文件:
  编辑配置文件,最基本的选项有Host、HostName、User等,VS Code编辑该配置文件时有智能提示,可以有效帮助我们编辑。其中配置字段的含义如下:

Host Ubunt20.04_test
    HostName 192.168.200.113
    User ubuntu
# Host表示该远程机器的名称,可以任意起名字
# HostName表示当前远程机器的ip地址,也可以使用域名进行映射
# User表示当前的登陆用户
# 可以添加多个标签,配置多个远程目标的相关参数,如下图所示


  3.登陆
  在需要登陆的远程机器名称上右键,选择在当前窗口登陆或者在新窗口登陆,然后根据提示选择登陆的系统类型并输入登陆密码,实现登陆:

  登陆成功后,可以看到右下角显示为Ubuntu的终端

生成并配置密钥

使用ssh生成密钥

密钥可以使用window生成,也可以使用Ubuntu生成,这里我们选择在Ubuntu系统中生成密钥,步骤如下所示:
  1.使用ssh命令生成密钥

ssh-keygen

2.确定保存路径,这里直接使用Enter键使用默认路径

Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Created directory '/home/ubuntu/.ssh'.

3.使用密码对密钥进行加密,如果需要则输入两次密码(我们这里使用Enter键跳过,不使用加密)

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

4.生成密钥提示

//id_ras是私钥,id_ras.pub是公钥
Your identification has been saved in /home/ubuntu/.ssh/id_rsa
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub

部署公钥

1.进入密钥存放的文件夹

cd ~/.ssh

2.新建认证密钥的文件authorized_keys,这里使用cat命令直接将公钥追加在文件中,如果没有这个文件,以下命令会自动生成

cat id_rsa.pub >> authorized_keys

3.修改文件权限,以保证连接成功

sudo chmod 600 authorized_keys
sudo chmod 700 ~/.ssh

配置SSH登陆权限

1.使用以下命令查看并修改ssh的配置文件

sudo vim /etc/ssh/sshd_config

2.保证22端口有效,RSA认证有效,Pubkey认证有效,如下所示:

Port 22
RSAAuthentication yes
PubkeyAuthentication yes

3.重启ssh服务

sudo service sshd restart

部署私钥到客户端(windows)

使用Xftp登陆Ubuntu系统,将生成的密钥,从保存的文件夹中下载到windows用户的.ssh文件夹下,如下图所示:
  可以对私钥进行重命名,这样就可以分别配置多个远程机器的ssh密钥登陆,比如图片中的local_id_rsaremote_id_rsa
  因为密钥本身就是文本,所以我们也可以直接手动创建文件,然后直接将内容粘贴复制到windows主机上对应的文件上。

修改VS Code配置文件并登陆

修改VS Code配置文件

在VS Code配置文件中相应的Host下添加字段IdentityFile,字段内容为公钥的文件路径,效果如下所示:

Host Ubunt20.04_test
    HostName 192.168.200.113
    IdentityFile ~/.ssh/id_rsa
    User ubuntu

如果配置了多台远程的登陆信息,则需要将不同的密钥进行重命名以进行区分。

使用ssh密钥登陆

重新启动窗口,进行登陆,可以发现不需要进行密码验证了。在这时候,可以在ssh登陆权限中关闭密码认证,只允许用ssh密钥连接,以保证安全性。

常见问题

已有的ip地址更换了主机,导致无法登录

已经登录过的主机会在本地保存登录的公钥。如果HostName没变,但是更换了远程的主机会导致连接失败。我们可以通过删除相关记录来解决这个问题,windows和linux系统中该记录在以下文件中:

# windows
C:/Users/用户名/.ssh/known_hosts

# linux(ubuntu)
~/.ssh/known_hosts

清除其中旧的数据项,然后重新连接即可。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值