告别密码:使用 SSH 密钥实现更安全、更便捷的服务器登录

前言

在日常的服务器管理和开发工作中,我们每天可能需要无数次地登录远程服务器。传统的密码登录方式不仅繁琐——需要我们记住并输入复杂的密码,更重要的是,它将我们的服务器暴露在被暴力破解的风险之下。

有没有一种方法,既能让我们安全地连接服务器,又能免去重复输入密码的烦恼呢?

答案是肯定的。那就是使用 SSH 密钥对进行身份验证。这篇博客将带你一步步配置 SSH 密钥登录,让你的服务器连接既安全又高效。

Read more

Deploy frp on mac and linux

在 Mac 和 Linux 上部署 frp, 来实现内网穿透, 使得外网可以访问内网的服务, 例如家里的 NAS, 服务器等等.

什么是 frp

frp 是一个快速反向代理, 可以帮助您将内部网络服务暴露到公共网络, 例如家庭网络中的 NAS, 服务器等等.

安装 frp

首先从 frp 的 GitHub Releases 页面下载 frp 的客户端和服务端程序.

如下图:

image-20241128162828012

其中frp_0.x.x_darwin_amd64.tar.gz是 Mac 版本的客户端程序, frp_0.x.x_linux_amd64.tar.gz是 Linux 版本的客户端程序.
解压后包含以下文件:

  • frpc 客户端程序
  • frps 服务端程序
  • frps.toml 服务端配置文件
  • frpc.toml 客户端配置文件
  • LICENSE 许可证文件

服务端: 具有公网 IP 的Linux服务器

  1. 下载对应 frp 的服务端程序

  2. 解压缩至任一目录

  3. 修改 frps.toml 配置文件

    1
    2
    # frps.toml
    bindPort = 7000
  4. 运行 ./frps -c frps.toml 启动服务端

客户端: Mac

  1. 下载对应 frp 的客户端程序

  2. 解压缩至任一目录

  3. 修改 frpc.toml 配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # frpc.toml
    serverAddr = "x.x.x.x"
    serverPort = 7000

    [[proxies]]
    name = "ssh"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000
  4. 运行 ./frpc -c frpc.toml 启动客户端

分别配置守护进程

服务端: Linux

可以完全参考官方文档, 使用systemd方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动

客户端: Mac

MAC上可以使用launchd来配置守护进程, 使得 frpc 客户端程序在后台运行.

  1. 创建一个 plist 文件, 例如 frpc.plist

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
    http://www.apple.com/DTDs/PropertyList-1.0.dtd >
    <plist version="1.0">
    <dict>
    <key>Label</key>
    <string>frpc</string>
    <key>ProgramArguments</key>
    <array>
    <string>/Users/xxxx/frp/frpc</string>
    <string>-c</string>
    <string>/Users/xxxx/frp/frpc.toml</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
    </dict>
    </plist>

    其中/Users/xxxx/frp/为 frp 的安装目录, frpc.toml为 frpc 的配置文件

  2. 根据需求该文件存到对应目录

  • ~/Library/LaunchAgents/ 仅当前用户
  • /Library/LaunchAgents/ 所有用户
  • /Library/LaunchDaemons/ 系统级别
  1. 加载配置文件
1
2
sudo chown root ~/Library/LaunchAgents/frpc.plist
launchctl load -w ~/Library/LaunchAgents/frpc.plist
  1. 启动服务
1
launchctl start frpc
  1. 查看服务状态
1
launchctl list | grep frpc

或者打开mac monitor查看是否有frpc进程

image-20241128164327407
  1. 其他命令
1
2
launchctl stop frpc # 停止服务
launchctl unload ~/Library/LaunchAgents/frpc.plist # 卸载服务

Use ssh to connect to Google Virtual Machine

谷歌云服务器默认登录方式是browser ssh,但是有时候我们需要第三方客户端使用ssh连接服务器。
本文介绍如何使用ssh连接Google Cloud平台的虚拟机(云服务器)

Read more

Style your Terminal & IDEs

Style your Terminal

In this article, I will show you how to style your terminal and IDEs.
We will use iTerm2 as the terminal and Oh My Zsh as the shell.

Read more

NVM 使用指南

NVM(Node Version Manager)是一个 Node.js 版本管理工具,可以让你在同一台服务器上安装和切换不同版本的 Node.js。本文将介绍如何安装和使用 NVM。

1. 安装 NVM

1.1 使用 cURL 安装 NVM

首先,你需要使用 cURL 下载 NVM 安装脚本。在终端中执行以下命令:

1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

1.2 使用 Wget 安装 NVM

如果你没有安装 cURL,也可以使用 Wget 下载 NVM 安装脚本:

1
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

1.3 使用 homebrew 安装 NVM

如果你使用 macOS,并且安装了 homebrew,你可以使用以下命令安装 NVM:

1
brew install nvm

1.4 验证安装

安装完成后,你需要重新加载终端配置文件(如 .bashrc.bash_profile.zshrc 等)或重启终端。然后执行以下命令验证 NVM 是否安装成功:

1
command -v nvm

如果输出 nvm,则表示 NVM 安装成功。

2. 使用 NVM 安装 Node.js

2.1 查看可用 Node.js 版本

你可以使用以下命令查看 NVM 支持的所有 Node.js 版本:

1
nvm ls-remote

2.2 安装 Node.js

安装 Node.js 的命令格式为:

1
nvm install <version>

例如,安装 Node.js 14.17.0:

1
nvm install 14.17.0

2.3 切换 Node.js 版本

安装多个 Node.js 版本后,你可以使用以下命令切换版本:

1
nvm use <version>

例如,切换到 Node.js 14.17.0:

1
nvm use 14.17.0

2.4 设置默认 Node.js 版本

你可以使用以下命令设置默认 Node.js 版本:

1
nvm alias default <version>

例如,设置默认 Node.js 版本为 14.17.0:

1
nvm alias default 14.17.0

3. 卸载 NVM

如果你想卸载 NVM,可以执行以下命令:

1
rm -rf ~/.nvm

4. 安装pnpm

1
npm install -g pnpm

使用 Nginx 和 Apache2 配置反向代理

反向代理是一种服务器配置方式,用来代理和转发客户端的请求到后端服务器上。它可以在负载均衡、缓存、加速、安全性等方面提供帮助。常见的反向代理服务器有 Nginx 和 Apache2。本文将详细讲解如何使用 Nginx 和 Apache2 来配置反向代理,将请求代理到不同的端口或服务器上。

Read more