所有分类
  • 所有分类
  • 游戏源码
  • 网站源码
  • 单机游戏
  • 游戏素材
  • 搭建教程
  • 精品工具

VSCode|Remote-SSH免密连接服务器|保姆级配置教程|密钥设置一步到位

VSCode|Remote-SSH免密连接服务器|保姆级配置教程|密钥设置一步到位 一

文章目录CloseOpen

先搞懂:为什么免密连接比输密码更好?

在说具体操作前,咱们得先明白一个问题:免密连接到底好在哪儿?你可能会想“输密码虽然麻烦,但至少看得见摸得着,免密会不会不安全?”其实恰恰相反,SSH密钥认证比密码认证安全得多,而且效率提升不是一点半点。

我去年帮公司带实习生的时候,就遇到过典型案例:新来的小伙儿坚持用密码连接服务器,理由是“看得见的密码才放心”。结果呢?一周内因为赶项目着急,输错密码三次,导致服务器临时锁定(很多服务器有输错次数限制),每次都得找运维解锁,不仅耽误自己进度,还影响整个团队。后来我帮他配置了免密连接,他自己都说“原来连服务器可以这么丝滑,早知道就不跟密码死磕了”。

从原理到实际:免密连接到底是怎么回事?

免密连接的核心是「密钥配对」,就像你家的钥匙和锁:公钥是“锁”,你把它放在服务器上;私钥是“钥匙”,存在你自己的电脑里。每次连接时,服务器会用公钥“验证”你电脑里的私钥,配对成功就直接放行,全程不用输密码。

对比输密码的方式,它有三个明显优势:

  • 更安全:密码可能被暴力破解,但密钥是一串长达2048位(甚至4096位)的随机字符,破解难度相当于“从全宇宙的沙子里找出特定一粒”。VSCode官方文档里明确提到,使用SSH密钥认证能“显著降低账户被未授权访问的风险”(你可以去VSCode Remote-SSH文档{rel=”nofollow”}里搜“security”,有详细说明)。
  • 效率高:我自己统计过,以前输密码连接服务器,平均每次要30秒(包括打开终端、输密码、等验证),用了免密后,点击VSCode里的服务器图标,3秒内就能连接成功,一天连十几次的话,光省下来的时间就能多写半页代码。
  • 跨设备通用:如果你有多个开发设备(比如公司电脑、家里笔记本),只要把每个设备的公钥都加到服务器上,就能实现“一台服务器,多设备免密访问”,不用记多个密码。
  • 哪些人特别适合用免密连接?

    其实只要用VSCode做远程开发的人都该试试,但这几类人尤其需要:

  • 每天连接服务器3次以上的高频用户(比如后端开发者、运维同学);
  • 经常在不同网络环境切换的人(比如公司内网、家里WiFi、咖啡厅热点,免密能避免网络波动导致的密码重输);
  • 对开发效率有要求的团队(团队统一用免密连接,能减少因密码问题导致的环境配置时间)。
  • 我之前在的创业团队,10个开发全都用密码连接服务器,光是每周因为输错密码、忘记密码浪费的时间加起来就有20多小时,后来统一配置免密连接后,这部分时间几乎降为零,团队leader还在周会上专门夸了这个方法“立竿见影”。

    手把手实操:从密钥生成到VSCode配置,一步不落

    接下来进入最关键的实操环节,别担心,我会把每个步骤拆解得像“教老人用微信”一样细,不管你是Windows、Mac还是Linux系统,跟着做都能搞定。

    第一步:在自己电脑上生成SSH密钥(3分钟搞定)

    密钥是免密连接的“通行证”,得先在你本地电脑生成一对(公钥+私钥)。不同系统的操作稍有区别,但核心命令一样,我整理了一张对比表,你对着找自己的系统操作就行:

    操作步骤 Windows系统(PowerShell) Mac/Linux系统(终端) 注意事项
  • 打开终端
  • 按Win+R,输入powershell,回车 启动台搜索“终端”或按Cmd+空格输入terminal 确保终端有管理员权限(右键“以管理员身份运行”)
  • 生成密钥
  • 输入:
    ssh-keygen -t ed25519
    输入:
    ssh-keygen -t ed25519
    -t ed25519是指定密钥算法,比rsa更安全(VSCode推荐)
  • 设置密钥保存路径
  • 默认路径:
    C:Users你的用户名.sshid_ed25519
    直接回车用默认
    默认路径:
    ~/.ssh/id_ed25519
    直接回车用默认
    如果之前生成过密钥,会提示是否覆盖,选n(新建其他文件名)
  • 设置密钥密码(可选)
  • 直接按两次回车(留空) 直接按两次回车(留空) 留空就是完全免密,设密码则需要“密钥+密码”双重验证(更安全但麻烦)

    小提醒

    :如果你之前从没接触过终端命令,可能会卡在“找不到.ssh文件夹”。别慌,这是正常的,密钥生成后会自动创建这个文件夹,你可以在文件管理器里输入路径找到它(Windows是C:Users你的用户名.ssh,Mac/Linux是~/.ssh),里面会有两个文件:id_ed25519(私钥,像你的家门钥匙,千万别给别人)和id_ed25519.pub(公钥,像锁,可以放心给服务器)。

    第二步:把公钥“装”到服务器上(2分钟搞定)

    生成密钥后,得把公钥放到服务器上,这样服务器才认识你的“钥匙”。这一步有两种方法,选你觉得方便的就行。

    方法一:用ssh-copy-id命令(推荐,适合服务器支持该命令的情况)

    在本地终端输入:

    ssh-copy-id -i ~/.ssh/id_ed25519.pub 服务器用户名@服务器IP

    比如你的服务器用户名是dev,IP是192.168.1.100,就输入:

    ssh-copy-id -i ~/.ssh/id_ed25519.pub dev@192.168.1.100

    然后会提示你输入服务器密码(这是最后一次输密码!),输完回车,看到“Number of key(s) added: 1”就说明成功了。

    方法二:手动复制公钥内容(适合服务器不支持ssh-copy-id的情况)

    如果服务器提示“command not found: ssh-copy-id”,别慌,手动复制也很简单:

  • 打开本地的公钥文件(id_ed25519.pub),全选复制内容(以“ssh-ed25519”开头的一长串字符);
  • 用密码连接服务器,输入命令mkdir -p ~/.ssh && chmod 700 ~/.ssh(创建.ssh文件夹并设置权限,这步很重要,权限不对会导致密钥无效);
  • 输入vi ~/.ssh/authorized_keys打开授权文件,按i进入编辑模式,把复制的公钥内容粘贴进去,按Esc,输入:wq保存退出;
  • 输入chmod 600 ~/.ssh/authorized_keys(设置文件权限,必须是600,否则服务器不认)。
  • 我踩过的坑

    :有次帮朋友配置时,他服务器的~/.ssh文件夹权限是777(所有人可读写),结果公钥怎么都不生效,后来改成700(只有自己能访问),立刻就好了。所以权限这步千万别偷懒,按上面的命令设置准没错。

    第三步:VSCode里配置Remote-SSH,实现“一点就连”(5分钟搞定)

    服务器配置好公钥后,最后一步就是在VSCode里设置,以后就能一键连接了。

    先安装Remote-SSH插件

    打开VSCode,左边栏点“扩展”(或按Ctrl+Shift+X),搜索“Remote

  • SSH”,安装微软官方的那个(图标是蓝色的,作者是Microsoft)。安装完重启VSCode,左边栏会多出一个“远程资源管理器”图标,这就说明插件生效了。
  • 配置服务器连接信息

  • 点击“远程资源管理器”图标,在“SSH目标”下点击“配置”(齿轮图标),选择一个SSH配置文件(一般选第一个C:Users你的用户名.sshconfig~/.ssh/config);
  • 在打开的文件里,按格式输入服务器信息:
  • Host 服务器昵称(随便起,比如MyServer)
    

    HostName 服务器IP或域名(比如192.168.1.100)

    User 服务器用户名(比如dev)

    IdentityFile 本地私钥路径(比如C:Users你的用户名.sshid_ed25519或~/.ssh/id_ed25519)

    举个例子,我的配置是:

    Host MyDevServer
    

    HostName 10.0.0.5

    User webdev

    IdentityFile C:Userszhangsan.sshid_ed25519

  • 保存文件,回到“远程资源管理器”,就能看到你刚配置的服务器昵称了,右键点击“连接到主机”,选择一个终端窗口(一般选第一个“当前窗口”),稍等几秒,就能看到VSCode状态栏变成“SSH: 服务器昵称”,这就说明连接成功了!
  • 小技巧

    :如果你有多个服务器,就按上面的格式多写几行Host配置,每个服务器一个昵称,这样在VSCode里就能一目了然,想连哪个点哪个。

    验证是否真的免密成功

    断开连接(点击VSCode状态栏的服务器昵称,选“关闭远程连接”),再重新连接,如果全程没让你输密码,直接进入服务器目录,就说明大功告成!如果还是提示输密码,别急,检查这三个地方:

  • 本地私钥路径是否写对(IdentityFile里的路径要绝对路径,Windows注意用反斜杠,Mac/Linux用斜杠/);
  • 服务器的authorized_keys文件里有没有你的公钥,且权限是600;
  • 本地私钥文件权限是否正确(Windows不用管,Mac/Linux需要chmod 600 ~/.ssh/id_ed25519)。
  • 我之前帮同事排查时,就遇到过“私钥路径写成相对路径”的问题,他写成./.ssh/id_ed25519,VSCode根本找不到,改成绝对路径后立刻就好了。

    按照上面的步骤做完,你现在应该已经能用VSCode免密连接服务器了吧?如果成功了,记得试试在服务器上新建个文件,保存时会不会自动同步——免密连接不仅让登录更快,VSCode的文件同步、终端操作也会更流畅。如果遇到问题,别着急,把错误提示截图发在评论区,我看到都会帮你分析分析。毕竟远程开发嘛,环境配置的坑踩多了,自然就有经验了~


    服务器IP变了啊?别慌,免密配置照样能用,根本不用重新搞一遍密钥那些麻烦事。我上个月刚帮隔壁部门的同事处理过这情况,他当时服务器迁移换了IP,急得不行,以为之前配的免密全白费了,结果我两分钟就给他搞定了。其实道理很简单,免密连接的核心是你本地的私钥和服务器上的公钥配对,这俩就像你和服务器之间的“暗号”,IP呢,顶多算个“见面地点”,地点变了,暗号没变,服务器照样认你。

    具体改起来也特简单,你打开VSCode,左边栏找到那个像插头一样的“远程资源管理器”图标点进去,然后看“SSH目标”那块儿,旁边是不是有个小齿轮图标?点一下那个齿轮,选你之前配置的SSH文件(一般就是第一个带.ssh/config的)。打开文件后,找到你给服务器起的昵称对应的Host块,比如你之前写的Host MyServer,下面肯定有一行HostName,后面跟着的就是旧IP,你把那个IP换成新的,保存一下文件。完事儿了,回到远程资源管理器,右键点你那个服务器昵称,选“连接到主机”,你看,是不是直接就连上了?对了,有个小细节得提醒你,改完一定要记得保存文件,我之前有次帮人改,光顾着改IP忘了按Ctrl+S,结果连半天没反应,还以为哪里出问题了,后来才发现是没保存,白折腾好几分钟,你可别犯我这糊涂账。


    配置完免密连接后,为什么VSCode连接时仍然提示输入密码?

    这种情况最常见的原因有三个:一是本地私钥路径配置错误,比如VSCode的SSH配置文件(config)中IdentityFile路径写错,需检查路径是否为绝对路径(如Windows的“C:Users用户名.sshid_ed25519”或Mac/Linux的“~/.ssh/id_ed25519”);二是服务器权限问题,需确保服务器的~/.ssh文件夹权限为700,authorized_keys文件权限为600(可通过“chmod 700 ~/.ssh”和“chmod 600 ~/.ssh/authorized_keys”修复);三是公钥未正确添加到服务器的authorized_keys文件,可重新检查文件中是否包含本地公钥的完整内容。

    Windows系统找不到.ssh文件夹怎么办?

    .ssh文件夹默认隐藏在用户目录下,路径为“C:Users你的用户名.ssh”。如果在文件管理器中看不到,可点击顶部“查看”,勾选“隐藏的项目”显示隐藏文件;若仍找不到,可能是还未生成密钥,按文章步骤生成密钥后会自动创建该文件夹;也可手动创建:在用户目录右键“新建文件夹”,命名为“.ssh”(注意前面有个点),但 优先通过生成密钥自动创建,避免权限问题。

    私钥文件泄露了会有什么风险?如何处理?

    私钥相当于服务器的“钥匙”,泄露后他人可能通过你的私钥免密登录服务器,导致数据泄露或被恶意操作。处理方法:立即登录服务器,打开~/.ssh/authorized_keys文件,删除泄露私钥对应的公钥(即之前添加的以“ssh-ed25519”开头的那行内容);然后在本地重新生成新的密钥对(按文章第一步操作,注意保存路径可换个名称,避免覆盖),并将新公钥重新添加到服务器的authorized_keys文件中,确保旧密钥彻底失效。

    可以给多台设备(如公司电脑、家里笔记本)配置同一服务器的免密连接吗?

    完全可以。操作方法和单台设备相同:在每台设备上分别生成SSH密钥对,然后将每台设备的公钥(id_ed25519.pub内容)依次添加到服务器的~/.ssh/authorized_keys文件中,每个公钥占一行即可。这样所有设备都能通过各自的私钥免密连接服务器,且互相不影响,适合需要在多设备间切换开发的场景。

    服务器IP地址变了,之前的免密配置还能用吗?如何更新?

    服务器IP变更后,只需更新VSCode的SSH配置文件即可继续使用免密连接。具体步骤:打开VSCode的“远程资源管理器”,点击“SSH目标”旁的齿轮图标打开config文件,找到对应服务器的Host配置,将HostName的值修改为新的服务器IP,保存文件后重新连接即可。私钥和公钥无需重新生成,因为免密认证依赖的是密钥配对,与IP无关。

    原文链接:https://www.mayiym.com/43416.html,转载请注明出处。
    0
    显示验证码
    没有账号?注册  忘记密码?

    社交账号快速登录

    微信扫一扫关注
    如已关注,请回复“登录”二字获取验证码