【本地端window系统基于vscode免密登录远程服务器linux系统】

本地笔记本免密(通过SSH公钥和私钥)连接远程服务器或者github

因本地笔记本每次登录公司远程服务器都需要输入账号密码,比较影响工作效率,为解决此问题,特意写此博客;本机登录远程服务器其实和登录github仓库有异曲同工的地方。gitbash可以操作远程端仓库,亦可作为终端与远程服务器建立链接。

1. VS code安装及配置远程服务器地址和用户名等

  1. 在本地端/自己笔记本上安装VS code。
  2. 在VS code中搜索插件Remote-SSH并安装,安装成功后左侧会出现如下所示图标:
    在这里插入图片描述
  3. 点击该图标->点击齿轮按钮(配置按钮),出现配置界面,在里面输入相应的服务器地址和用户名即可,如果是公司给你分配的工作空间,那么用户名就是公司给你分配的用户名
    在这里插入图片描述
    在这里插入图片描述
    修改配置文件
    在这里插入图片描述
    选中对应的远程服务器->右击->连接服务器
    在这里插入图片描述
    由于没有对公钥进行配置,这种登录方式需要密码进行登录。

2. 本地端笔记本生成对应的公钥和私钥用于免密链接远程端服务器

本地端生成公钥和私钥有两种办法,一种是本地端口没有安装gitbash,直接在window cmd powershell中生成公钥和私钥,另一种是安装git,在gitbash中生成本地端的公钥和私钥,建议使用gitbash,gitbash可以提供linux类的操作指令来操作本地端。

  1. ssh-keygen 命令生成公钥和私钥,公钥路径可默认,直接回车,然后输入密码,不输入可直接回车,生成公钥界面如下:
    在这里插入图片描述

  2. 公钥的作用,

     (1).很多代码服务器都是需要认证的,ssh认证是其中的一种。在客户端生成公钥,把生成的公钥添加到代码服务器,你以后连接服务器拉取代码时就不用每次都输入用户名和密码了。
     (2).很多git服务器都是用ssh认证方式,你需要把你生成的公钥发送给代码仓库管理员,让他给你添加到服务器上,你就可以通过ssh自由地拉取和提交代码了。
     (3).如果是github、码云、coding、华为云开发者,你把公钥加到自己个人中心的SSH公钥列表里即可。
    
  3. Windows查看ssh公钥方法:

     1.打开你的git bash 窗口
     2.进入.ssh目录: cd ~/.ssh
     3.找到id_rsa.pub文件: ls
     4.查看公钥: cat id_rsa.pub 或者 vim id_rsa.pub
     5.绝对路径cat ~/.ssh/id_rsa.pub
    

在这里插入图片描述

3. 本地端笔记本链接到远程端

将公钥复制到被登陆的主机上的 ~/.ssh/authorized_keys 文件中
拷贝公钥有两种方法,其原理都相同:
1. 使用 ssh-copy-id 直接拷贝
如果安装了Git的话,打开Git bash使用 ssh-copy-id 进行拷贝公钥非常方便,只需要指定目标主机和目标主机的用户即可。在本地端打开gitbash窗口,输入如下命令:

	ssh-copy-id -i ~/.ssh/id_rsa.pub tengfei.yue@10.19.0.13   (服务器地址更改过,为保护隐私)
	ssh-copy-id -i id_rsa.pub tengfei.yue@10.19.0.13          (这两个操作命令主要区别在于是在那个工作空间,直接在.ssh文件夹里打开gitbash,则用当前这个,其他情况则用上面那个)

然后依次输入yes和密码即可
在这里插入图片描述
如果远程服务器不在内网之中,而是通过一个外网 IP 的 xxxxx 端口转发登陆ssh,则与 ssh 登陆一样,指定端口号即可。

	# username@host_public_ip -p port
	ssh-copy-id -i id_rsa.pub tengfei.yue@10.19.0.13 -p xxxxx 

登录到远程机器不用输入密码

	ssh tengfei.yue@10.19.0.13    #即可登录到远程服务器,此时命令行的路径会变为远程端的路径或者相应的信息。
	#ssh tengfei.yue@10.19.0.13 -p xxxxx    # 若存在端口转发

2. 自己创建文件进行拷贝
如果没有安装Git,好像Windows PowerShell不支持ssh-copy-id命令;
先cd到Windows10的用户下的 .ssh 目录,使用scp命令将authorized_keys文件拷贝到linux下

	scp .\id_rsa.pub tengfei.yue@10.19.0.13:/home/users/tengfei.yue

拷贝时需要密码
在这里插入图片描述
然后使用ssh登录Ubuntu在用户目录下(/home/users/tengfei.yue)创建.ssh文件夹,需要将该目录权限改为700,该目录的权限必须是700才有效,然后将id_rsa.pub文件移动到.ssh目录下,并修改其名称为authorized_keys,修改其权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效。
在这里插入图片描述
此时回到windows10下,使用ssh命令登录,可以看到,不再需要密码了
在这里插入图片描述

如果远程服务器已经有了.ssh文件夹,且里面也有了authorized_keys文件,则在远程服务器中直接使用如下命令将公钥id_rsa.pub追加到远程服务器管理密码登录权限的文件(authorized_keys)中即可:

	 cd /home/users/tengfei.yue/.ssh
	 cat /home/users/tengfei.yue/id_rsa.pub >> authorized_keys

注意:如果~/.ssh目录下不存在authorized_keys文件手动添加

	touch  authorized_keys

修改权限:

	chmod 700 ~/.ssh/
	chmod 600 ~/.ssh/authorized_keys

此时,本地服务器A的公钥(登录远程服务器B的权限)追加到远程服务器B中的权限文件authorized_keys中,本地服务器A可免密登录远程服务器B了。重启vscode便可免密登入远程服务器
原因:因为此时远程服务器B的密码登录权限文件authorized_keys中已经有本地服务器A的公钥,即A获得了B的登录权限。

注意:远程端服务器的.ssh文件夹一定要放对地方,本人的远程端服务器防止位置为/home/users/tengfei.yue/,不同的服务器防止位置不同,本人此处为公司分配空间,因此需要放置在此位置,如果是自己完全自建的远程服务器,一般是在 /root 根目录。个人理解,一般自己的远程端服务器工作权限在那块就把.ssh文件夹放置在此处即可。

本篇博客如有不正确的地方敬请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值