当前位置: 首页 > article >正文

配置 SSH 无需密码连接服务器及为 IP 指定自定义域名

背景

平常使用 vscode 和 terminal 远程连接服务器时,每次都要输入密码。由于为了服务器安全着想,密码设置的很复杂,于是每次输入密码都很痛苦。在终端输入远程主机的ip时,ip也记不住,所以想着给ip指定一个自定义域名。


摘要

SSH(Secure Shell)是常用的远程登录工具,支持安全的远程连接和文件传输。本文将介绍如何在 Mac 上配置 SSH 无需密码连接服务器,以及如何为一个 IP 地址指定自定义域名,以便更方便地使用 SSH 进行连接。

一、配置 SSH 无需密码连接服务器

在配置 SSH 无需密码连接服务器前,通常需要进行以下几个步骤:生成 SSH 密钥对,将公钥复制到服务器,并确保服务器的 SSH 配置允许公钥认证。

1.1 生成 SSH 密钥对

首先,使用 ssh-keygen 命令生成 SSH 密钥对(公钥和私钥)。公钥将被复制到服务器,而私钥保留在本地。

在终端中运行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:指定使用 RSA 算法生成密钥。
  • -b 4096:密钥长度为 4096 位,较长的密钥通常更安全。
  • -C "your_email@example.com":附加在密钥上的注释,通常是你的邮箱地址。

执行命令后,系统会提示你选择存储密钥的路径,默认情况下是 ~/.ssh/id_rsa一直按回车使用默认路径 即可。接着,会提示你设置一个密码短语(passphrase),为了实现免密码登录,可以直接按回车跳过。

在这里插入图片描述

1.2 将公钥复制到服务器

接下来,将生成的公钥(默认是 ~/.ssh/id_rsa.pub)复制到服务器的 ~/.ssh/authorized_keys 文件中。这可以通过以下命令自动完成:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
  • user 是服务器上的用户名。
  • server_ip 是服务器的 IP 地址。

如果 ssh-copy-id 命令不可用,或者你的 Mac 上没有安装这个工具,可以手动将公钥复制到服务器:

cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

上述命令会将本地公钥追加到服务器上的 ~/.ssh/authorized_keys 文件中。

1.3 确保服务器允许公钥认证

为了确保服务器能够接受公钥认证,需要检查服务器上的 SSH 配置文件 /etc/ssh/sshd_config,确认以下选项设置为正确的值:

PubkeyAuthentication yes
PasswordAuthentication no

这样可以确保只允许公钥认证,并禁用密码登录。更改配置后,需要重启 SSH 服务以使配置生效:

sudo systemctl restart sshd

1.4 测试 SSH 无密码连接

现在,可以尝试连接服务器:

ssh user@server_ip

如果配置正确,将可以直接登录服务器,无需输入密码。

1.5 (可选)简化 SSH 配置

为了进一步简化 SSH 连接命令,可以在本地的 ~/.ssh/config 文件中配置别名。打开该文件并添加以下内容:

Host myserver
    HostName server_ip
    User user
    IdentityFile ~/.ssh/id_rsa

比如我的设置:

Host jieshen.ai
    HostName 1xx.1xx.1xx.174
    User jie

之后,就可以使用以下命令来连接服务器,而不需要每次都输入完整的命令:

ssh jieshen.ai

二、为 IP 指定自定义域名

如果你想要更方便地记住服务器的地址,可以为一个 IP 地址指定自定义域名。可以通过以下几种方式实现。

2.1 修改本地 hosts 文件

最简单的方法是在本地计算机上修改 hosts 文件,将域名解析为指定的 IP 地址。这只在本地生效,对于其他机器不可见。

步骤:
  1. 打开 hosts 文件

    • 在 Mac 上,hosts 文件位于 /etc/hosts
  2. 编辑 hosts 文件
    使用文本编辑器(如 nanovim)打开文件并添加一行:

    192.168.1.100 myserver.local
    

    这表示在本地将 myserver.local 映射到 192.168.1.100。保存文件后,当你使用 myserver.local 访问时,会解析为该 IP 地址。

  3. 使用自定义域名进行 SSH 连接

    ssh user@myserver.local
    

2.2 使用 DNS 服务器配置域名

如果你有一个公共或私有的 DNS 服务器,可以通过配置 DNS 服务器来为一个 IP 地址指定域名。

步骤:
  1. 登录 DNS 管理面板:如果你有域名,可以登录你的域名注册商的 DNS 管理面板。
  2. 添加 A 记录:将你想要的域名(如 myserver.example.com)指向服务器的 IP 地址。
  3. 等待 DNS 生效:保存更改后,DNS 更新可能需要几分钟到几小时。

完成后,可以使用域名直接进行 SSH 连接:

ssh user@myserver.example.com

2.3 使用 SSH 配置文件

还可以通过配置 SSH 客户端的 ~/.ssh/config 文件来实现域名映射。这种方式适用于个性化设置和简化命令行操作。

步骤:
  1. 编辑 SSH 配置文件

    打开 ~/.ssh/config 文件并添加以下内容:

    Host myserver
        HostName 192.168.1.100
        User user
    
  2. 使用别名进行连接

    现在可以直接使用以下命令连接到服务器:

    ssh myserver
    

总结

通过配置 SSH 无需密码连接服务器和为 IP 指定自定义域名,可以极大简化日常的远程登录操作,提高效率。在日常开发和运维工作中,掌握这些技巧可以减少重复性操作,让工作更加便捷。希望本文对你有所帮助,能够顺利配置 SSH 并更方便地管理远程服务器。


http://www.kler.cn/a/369328.html

相关文章:

  • 使用Git进行团队协作开发
  • 【OpenAI】第五节(图像生成)利用 OpenAI 的 DALL·E 实现自动化图像生成:从文本到图像的完整教程
  • Lodash.js处理数组、对象、函数等常用方法介绍
  • IDEA初探:深入理解 Structure 功能
  • ReactOS系统中平衡二叉树。给定地址超导其所属区块MmFindRegion()
  • 【认知智能】编译器1
  • arthas使用 笔记
  • 2025选题|基于Hadoop的物品租赁系统的设计与实现
  • windows 训练yolov8官方数据集
  • SpringBoot poi-tl通过模板占位符生成word文件
  • 奥哲与中建三局集团有限公司战略签约
  • 美畅物联丨视频上云网关如何配置上级联网云平台
  • nacos安装与配置
  • 存储引用服务(OSS)Minio 环境搭建
  • 最新版的 Git+VS Code同步版本管理实践
  • 运维面试汇总
  • [JAVAEE] 面试题(一) - 锁策略, synchronized的详细介绍
  • 标题点击可跳转网页
  • 【32】C++流
  • ETLCloud+Doris组合:数据集成,更简单更高效
  • Linux系统基础-进程间通信(5)_模拟实现命名管道和共享内存
  • 【ubuntu18.04】ubuntu18.04 编译LightGBM操作说明
  • 大众点评 web mtgsig 1.2分析
  • AI跟踪报道第62期-本周AI新闻: 微软推出Copilot的AI Agent和Computer Control
  • 【学术会议投稿】Imagen:重塑图像生成领域的革命性突破
  • 深入理解Rust中的指针:裸指针 智能指针