当前位置: 首页 > 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 node1
    HostName node1
    User your_username

Host node2
    HostName node2
    User your_username

Host node3
    HostName node3
    User 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),请确保私钥文件的安全性,不要泄露给他人。

相关文章:

  • 【在时光的棋局中修行——论股市投资的诗意哲学】
  • C语言中ASCII码与整型互相转换的那些事儿
  • C语言【基础篇】之函数——开启模块化开发的钥匙
  • 多人协同开发 —— Git Aoneflow工作流
  • Java 不可变集合
  • MySQL 窗口函数:功能、使用场景与性能优化
  • STM32MP2 系列 RIF 资源隔离框架使用教程
  • 图论:tarjan 算法求解强连通分量
  • 【原创】vue-element-admin-plus完成编辑页面中嵌套列表功能
  • DeepSeek ,银行营销会被 AIGC 颠覆吗?
  • vue3-json-viewer 的复制功能无效
  • AI大模型 推理 思维链 原理
  • Hive: 中文注释乱码问题
  • Effective Objective-C 2.0 读书笔记——大中枢派发
  • ubuntu 安装管理多版本python3 相关问题解决
  • AI Agent 技术在网络中有什么应用
  • 正顺基碱基
  • 【深度学习】环境和分布偏移
  • TCP/UDP协议与OSI七层模型的关系解析| HTTPS与HTTP安全性深度思考》
  • 【Mysql索引在什么情况下会失效?】
  • 体坛联播|欧冠半决赛阿森纳主场不敌巴黎,北京男篮险胜山西
  • 西湖大学独家回应本科招生走出浙江:经过三年试点,条件成熟
  • 《中国奇谭》首部动画电影《浪浪山小妖怪》定档8月2日
  • 对话|贝聿铭设计的不只是建筑,更是生活空间
  • “90后”樊鑫履新乌兰察布市察右中旗副旗长人选
  • 外交部:对伊朗拉贾伊港口爆炸事件遇难者表示深切哀悼