Mac 本机配置远程服务器的免密 SSH 登录

Mac 本机配置远程服务器的免密 SSH 登录
Photo by Martin Shreder / Unsplash

在本地电脑上针对服务器进行远程登录配置,是非常必要的操作,不仅可以快速登录服务器,而且在使用 Datagrip 连接远程数据库时,也可以通过 SSH 配置文件的方式,快速进行认证并且连接。

 id_ed25519 作为 SSH 密钥对是一种更安全且现代的认证方式,相比传统的 RSA 密钥,它在性能和安全性上都更好。

首先,在阿里云控制台上,进入 ECS -> 网络与安全 -> 安全组,确保它允许来自你 IP 地址的 22端口(TCP) 访问。

生成 SSH 密钥对(id_ed25519)

1. 打开终端,输入以下命令生成 SSH 密钥对:

ssh-keygen -t ed25519 -C "[email protected]"

-t ed25519:指定密钥类型为 ed25519。

-C "[email protected]":为密钥添加一个注释(通常是你的电子邮件地址,用于标识密钥)。

2. 然后,系统会提示你选择保存密钥的路径(默认是 ~/.ssh/id_ed25519)。你可以按回车键选择默认路径。

Enter file in which to save the key (/Users/yourusername/.ssh/id_ed25519):

3. 设置密钥的 密码(可选),如果你不想设置密码,直接按回车键跳过。

4. 完成后,~/.ssh 目录下会生成两个文件:

id_ed25519:私钥文件。

id_ed25519.pub:公钥文件。

将公钥添加到 ECS 实例

1. 登录到阿里云管理控制台,进入 ECS 实例 页面。

2. 在实例的 “管理” 中,找到 “设置 SSH 密钥”“密钥对管理”

3. 打开你本机电脑生成的 id_ed25519.pub 公钥文件。你可以使用以下命令查看内容:

cat ~/.ssh/id_ed25519.pub

4. 将公钥内容复制,然后在 ECS 命令行中,通过 vim 来将 id_ed25519.pub 公钥内容添加到 ~/.ssh/authorized_keys 文件中。

• 在“SSH 密钥管理”中选择 “导入公钥” 或直接粘贴公钥内容。

5. 确保权限正确

确保 ~/.ssh 目录和 authorized_keys 文件的权限设置正确:

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

6. 测试 SSH 登录

现在,公钥已经添加到 authorized_keys 文件中了,你可以使用私钥从本地机器连接到 ECS 实例进行测试:

ssh -i ~/.ssh/id_ed25519 root@your-ecs-public-ip

如果没有输入密码即可连接,选择 yes,即可成功登录。

7. 可选:配置 SSH 配置文件简化连接

一般情况下,都会配置一个简化别名连接,比如通过 ssh ecs 即可直接无感进入到服务器。

在 ~/.ssh/config 文件中,通过 vim 添加以下内容:

Host ecs
  HostName your-ecs-public-ip
  User root
  IdentityFile ~/.ssh/id_ed25519

然后,你只需要输入以下命令即可连接,其中 ecs 是别名,可以随便起。

ssh ecs

Read more

从事 SEO 12 年的大佬总结的要点

从事 SEO 12 年的大佬总结的要点

从事 SEO 12 年后,以下是我能想到的所有 SEO 技巧: 1. 在 H1、H2 和 URL 部分中使用主要关键词。 2. 停止追逐虚荣指标。流量固然重要,但转化率才是最重要的。 3. 内部链接可以将“几乎完成”的页面转变为表现最佳的页面。 4. 定期检查你的网站是否有坏链接,这是一个简单的 SEO 胜利。 5. Google Search Console 是您最好的朋友,使用它来重新优化排名在第 3-7 位的页面。 6. 90% 的反向链接应来自相关的高权威网站。 7. 速度决定一切——或许应该说,速度不足会扼杀一切。确保加载时间在 2 秒以内。 8. 持续更新内容将帮助你的页面保持更高的排名。 9. 使用 NLP

Pnpm 构建 Monorepo

Pnpm 构建 Monorepo

最近开始搭建 monorepo 的项目,了解到以下方案: * lerna 有强大完善的依赖管理和构建、打包发布流程,而且 v5 版本将 nx 与 lerna 整合了,提升了性能和速度 * 业界大多使用 lerna + yarn workspace 的方式来管理,yarn 用来管理依赖,lerna 用于管理发布 之前简单使用过 lerna ,不过再加上 yarn workspace , 学习容多、配置多又得折腾,太费劲🤪,暂时搁置。 最终尝试使用单一的 pnpm workspace + changesets 的方式来构建 monorepo,本身我就使用 pnpm 作为包管理工具,目前我的场景简单,pnpm 就已足够。 本文记录自己使用 pnpm workspace 搭建 monorepo

HTTP Web 缓存总结

HTTP Web 缓存总结

友情提示:缓存什么的,是完全依赖相关http header头信息来标记和判断的 缓存读取顺序: 首先读取本地缓存,如果条件满足就取本地缓存,否则往后走代理缓存,同理,条件满足就是从代理缓存取资源(可能存在多级代理缓存) 如果一条链路上的资源都不符合,那么就去源服务器获取 缓存优先级:Cache-Control > Expires > Etag > Last-Modified 缓存的分类和优先级 * 强缓存 状态码 200 (比如 200 (from cache)) * Expires 服务器下发的绝对时间,而判断的时候以浏览器时间为准,客户端和服务器有可能会不一样 * Cache-Control 相对时间,以客户端相对时间为准 * 协商缓存 状态码 304 * Last-Modified If-Modified-Since * Etag If-None-Match 强缓存优先级高于协商缓存,强缓存不会询问服务器,直接使用缓存。协商缓存会询问服务器关于文件的可用性 对于传输过程中的中间节点,本文都称为代理服务器,包括proxy、

关于 Webpack 使用 Babel 与 Vite 使用 ESBuild 的一些思考

关于 Webpack 使用 Babel 与 Vite 使用 ESBuild 的一些思考

虽然 Vite 是基于 esbuild 构建的,并且 esbuild 在构建速度上有显著优势,但 Webpack 目前并没有直接使用 esbuild 构建的原因涉及多个方面,主要是 架构设计差异、功能需求 和 兼容性 等问题。下面是一些关键的原因: 1. Webpack 的复杂性与扩展性 • Webpack 的高度可扩展性:Webpack 的设计目标是一个 高度可配置和可扩展的打包工具。它提供了丰富的插件和 loader 机制,支持各种复杂的构建需求(如代码分割、热更新、各种资源处理等)。这些功能要求 Webpack 必须具备更细粒度的控制能力,而 esbuild 的设计理念相对简化,主要关注高速构建和基本的模块转换功能。 • Loader 和 Plugin 系统:Webpack 的强大之处在于其 loader 和