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

在同一NAT下配置Linux机器的SSH免密登录指南(ssh-keygen、ssh-copy-id、主机名解析)

在同一个NAT下的不同Linux机器之间实现SSH免密登录,可以通过以下步骤完成。免密登录主要依赖于SSH密钥对(公钥和私钥)的配置。以下是详细的步骤说明:

1. 确保SSH服务已安装并启动

首先,确保所有涉及的Linux机器上都安装并启动了SSH服务(通常是sshd)。

检查SSH服务状态:

sudo systemctl status sshd

如果未安装,使用以下命令安装SSH服务:

  • Debian/Ubuntu 系统:

    sudo apt update
    sudo apt install openssh-server
    
  • CentOS/RHEL 系统:

    sudo yum install openssh-server
    sudo systemctl enable sshd
    sudo systemctl start sshd
    

2. 生成SSH密钥对

在需要进行免密登录的源机器(例如 MachineA)上生成SSH密钥对。如果已经有现有的密钥对,可以跳过此步骤。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

执行上述命令后,会提示你选择保存密钥的位置和设置密钥的密码短语(可选)。默认情况下,密钥会保存在~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)中。

3. 将公钥复制到目标机器

有几种方法可以将源机器的公钥复制到目标机器(例如 MachineB):

方法一:使用ssh-copy-id工具

这是最简单的方法,但需要目标机器的用户密码。

ssh-copy-id username@MachineB_IP

示例:

ssh-copy-id user@192.168.1.2

执行后,输入目标机器用户的密码,公钥将被添加到~/.ssh/authorized_keys文件中。

方法二:手动复制公钥

如果ssh-copy-id不可用或不方便,可以手动复制公钥。

在源机器上,查看公钥内容:

cat ~/.ssh/id_rsa.pub

将输出的公钥内容复制到目标机器的~/.ssh/authorized_keys文件中。

可以使用sshecho命令自动完成:

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

4. 设置正确的权限

确保目标机器上的.ssh目录和authorized_keys文件权限正确。

ssh username@MachineB_IP

在目标机器上执行:

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

5. 测试免密登录

在源机器上,尝试SSH连接到目标机器:

ssh username@MachineB_IP

如果一切设置正确,你应该能够无需输入密码直接登录到目标机器。

6. (可选)配置ssh-agent管理密钥

如果你为SSH密钥设置了密码短语,可以使用ssh-agent来缓存密码短语,避免每次连接时输入。

启动ssh-agent并添加密钥:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

7. 处理多台机器之间的免密登录

如果有多台机器需要互相免密登录,可以在每台机器上执行上述步骤,将每台机器的公钥添加到其他机器的authorized_keys中。

注意事项

  • 安全性:确保私钥(~/.ssh/id_rsa)的权限为600,并妥善保管,不要泄露给他人。
  • 防火墙设置:确保NAT后的机器之间的SSH端口(默认22)是开放的,防火墙规则允许相互访问。
  • 主机名解析:为了方便,可以在/etc/hosts文件中为每台机器配置主机名和IP映射,避免每次连接时输入IP地址。

示例 /etc/hosts 配置:

192.168.1.1 MachineA
192.168.1.2 MachineB
192.168.1.3 MachineC

这样,你可以使用ssh MachineB而不是ssh user@192.168.1.2进行连接。

通过以上步骤,你应该能够在同一个NAT下的不同Linux机器之间实现SSH免密登录,提高操作效率和便利性。


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

相关文章:

  • WinForm 的Combox下拉框 在FlatStyle.Flat的边框设置
  • SpringBoot集成Minio实现上传凭证、分片上传、秒传和断点续传
  • 【人工智能】Python常用库-Scikit-learn常用方法教程
  • 基于Matlab实现Gabo滤波器(源码)
  • 【通俗理解】神经网络中步长缩小的奥秘:优化算法与卷积操作的影响
  • JAVA题目笔记(二十)Stream流综合练习+方法引用
  • 【RISC-V CPU debug 专栏 5.1 -- SiFive Nexus Trace 和 Tessent Trace】
  • 大数据技术之Spark :我快呀~
  • 笔记本外接4k显示器只有30Hz刷新率
  • Vue-常用指令
  • 实战OpenCV之物体跟踪
  • 网络安全基础之笔记二(传输层安全)
  • vue2日历组件
  • java技术层面用调用jar包的class文件的技术
  • 时间序列预测——周期性解藕框架(PDF)
  • uniapp 地图移入的快,高亮显示两个
  • 建造者模式Builder——优雅的使用姿势
  • 241123_基于MindSpore学习Bert
  • 设备网络状态巡检系统需求文档
  • 实时数据开发 | checkpoints监控和调优
  • 【DVWA】File Upload任意文件上传实战
  • 运维面试题.云计算面试题
  • Scala身份证上的秘密以及Map的遍历
  • arcgis for js FeatureLayer和GeoJSON一个矢量点同时渲染图形和文本
  • Android按键点击事件三种实现方法
  • 88页精品PPT | 某电信集团大数据平台建设方案技术交流