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

SSH远程服务器免密码连接|含注意事项细节

需求描述:我想配置本地机器到ssh远程服务器的免密码连接,注意我日常会使用的集群有多个节点,每个节点的用户名以及密码都是一样的,但是不同节点的用户目录下的数据并不互通。

方案:

配置本地机器到 SSH 远程服务器的免密码连接,可以通过 SSH 密钥认证来实现。以下是详细的步骤:


1. 生成 SSH 密钥对

在本地机器上,生成一对 SSH 密钥(公钥和私钥)。如果你已经有一对密钥,可以跳过这一步。如果没有,可以使用以下命令生成:

ssh-keygen -t rsa -b 4096
  • -t rsa 表示使用 RSA 算法。

  • -b 4096 表示密钥长度为 4096 位,更安全。

运行该命令后,系统会提示你输入密钥保存的位置(默认是 ~/.ssh/id_rsa)和密钥的密码(passphrase)。如果你希望完全免密码登录,可以不输入密码,直接按回车跳过。


2. 将公钥复制到远程服务器

使用 ssh-copy-id 命令将本地生成的公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中。假设远程服务器的用户名是 your_username,节点的 IP 地址是 node1,你可以运行以下命令:

ssh-copy-id your_username@node1

如果服务器没有安装 ssh-copy-id,你可以手动复制公钥。步骤如下:

  1. 打开本地公钥文件(默认路径为 ~/.ssh/id_rsa.pub):

    cat ~/.ssh/id_rsa.pub
  2. 将公钥内容复制到远程服务器的 ~/.ssh/authorized_keys 文件中:

    ssh your_username@node1 "mkdir -p ~/.ssh && echo 'PASTE_PUBLIC_KEY_HERE' >> ~/.ssh/authorized_keys"

    其中 PASTE_PUBLIC_KEY_HERE 是你从本地公钥文件中复制的内容。


3. 配置多个节点

由于你提到集群有多个节点,且每个节点的用户名和密码相同,但用户目录下的数据不互通,你需要对每个节点重复上述步骤。

例如,如果你有三个节点,IP 地址分别为 node1node2node3,你需要分别运行:

ssh-copy-id your_username@node1
ssh-copy-id your_username@node2
ssh-copy-id your_username@node3

或者手动复制公钥到每个节点的 ~/.ssh/authorized_keys 文件中。


4. 检查和测试

完成上述步骤后,尝试从本地机器免密码登录到远程节点:

ssh your_username@node1
ssh your_username@node2
ssh your_username@node3

如果一切配置正确,你应该能够直接登录,而无需输入密码。


5. 可选:配置 SSH 配置文件

如果你经常需要连接多个节点,可以通过本地的 SSH 配置文件(~/.ssh/config)来简化命令。例如:

Host node1HostName node1User your_usernameHost node2HostName node2User your_usernameHost node3HostName node3User your_username

这样,你可以直接使用简化的命令登录:

ssh node1
ssh node2
ssh node3

注意事项

  1. 权限问题

    • 确保远程服务器的 ~/.ssh 目录权限是 700drwx------)。

    • 确保 ~/.ssh/authorized_keys 文件的权限是 600-rw-------)。

    • 如果权限不正确,即使配置了公钥,也可能无法登录。

  2. 服务器配置

    • 确保远程服务器的 SSH 配置文件 /etc/ssh/sshd_config 中允许密钥认证:

      • PubkeyAuthentication yes

      • AuthorizedKeysFile .ssh/authorized_keys

      • PasswordAuthentication no(可选,但更安全)

    • 修改配置后,需要重启 SSH 服务:

      sudo systemctl restart sshd
  3. 安全性

    • 如果你没有为私钥设置密码(passphrase),请确保私钥文件的安全性,不要泄露给他人。

http://www.lryc.cn/news/538751.html

相关文章:

  • 本地通过隧道连接服务器的mysql
  • Hadoop 基础原理
  • JavaScript 任务队列详解:Event Loop、宏任务与微任务
  • VScode运行后出现黑窗口
  • 华为昇腾 910B 部署 DeepSeek-R1 蒸馏系列模型详细指南
  • vue3项目实践心得-多次渲染同一svg + 理解v-if、transition、dom加载之间的顺序
  • 【实战项目】BP神经网络识别人脸朝向----MATLAB实现
  • java数据结构_二叉树_5.5
  • Deepseek-R1推理模型API接入调用指南 ChatGPT Web Midjourney Proxy 开源项目接入Deepseek教程
  • 计算机网络(4)TCP断开
  • 科技云报到:科技普惠潮流渐起,“开源”将带我们走向何方?
  • 【论文笔记】On Generative Agents in Recommendation
  • 使用 Spring Boot 和 Canal 实现 MySQL 数据库同步
  • vue3 在element-plus表格使用render-header
  • 算法——结合实例了解Minimax算法(极小化极大算法)
  • 使用 DeepSeek 生成商城流程图
  • 什么是GraphQL?
  • Spring Boot 的约定优于配置,你的理解是什么?
  • C#开源大型商城系统之B2B2C+O2O一体化_OctShop
  • gitte远程仓库修改后,本地没有更新,本地与远程仓库不一致
  • 【对比】Pandas 和 Polars 的区别
  • el-input无法输入0.0001的小数,自动转换为0在vue3中的bug
  • Ubuntu 下 systemd 介绍
  • BERT文本分类(PyTorch和Transformers)畅用七个模型架构
  • 两步在 Vite 中配置 Tailwindcss
  • 【vmware虚拟机安装教程】
  • 文字转语音(三)FreeTTS实现
  • string类详解(上)
  • Visual Studio Code使用ai大模型编成
  • 外贸跨境订货系统流程设计、功能列表及源码输出