【SSH】如何通过 SSH 跳板实现免密码登录(跨平台通用)

news/2025/2/2 22:03:41 标签: ssh, 运维

1. 前言

在实际开发或运维中,面对复杂网络环境,我们常常需要通过跳板机(Jump Host)连接到目标服务器。为了提高操作效率,SSH 免密码登录是一种高效且安全的选择。本文将从基础概念到实际操作,详细介绍如何通过跳板实现免密码登录,并涵盖 Windows、Linux 和 macOS 等主流平台。

2. 背景与需求

2.1 网络拓扑

  • 本地机器 A:用于操作(可以是 Windows、Linux 或 macOS)
  • 跳板机 B:拥有公网 IP,充当中转节点
  • 目标机器 C:在局域网中,仅能通过跳板机 B 访问

2.2 目标

从本地机器 A,通过跳板机 B,实现免密码登录到目标机器 C,同时支持常用开发工具如 VS Code 的远程开发。

3. 配置步骤

3.1 生成 SSH 密钥

在本地生成 SSH 密钥,用于身份验证:

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

按提示设置路径,建议使用默认路径:

  • Linux/macOS:~/.ssh/id_rsa
  • Windows:C:\Users\<你的用户名>\.ssh\id_rsa

生成文件:

  • 私钥:id_rsa
  • 公钥:id_rsa.pub

3.2 配置跳板机 B

将公钥上传到跳板机 B:

ssh-copy-id <B的用户名>@<B的公网IP>

或手动复制:

cat ~/.ssh/id_rsa.pub | ssh <B的用户名>@<B的公网IP> "cat >> ~/.ssh/authorized_keys"

设置权限:

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

3.3 配置目标机器 C

以下提供三种方法:

方法一:直接通过跳板上传(推荐)
ssh-copy-id -J <B的用户名>@<B的公网IP> <C的用户名>@<C的局域网IP>
方法二:借助临时文件上传
cat ~/.ssh/id_rsa.pub > pubkey.txt
ssh -J <B的用户名>@<B的公网IP> <C的用户名>@<C的局域网IP> "cat >> ~/.ssh/authorized_keys" < pubkey.txt
rm pubkey.txt
方法三:通过 B 手动上传
# 从本地上传到 B
cat ~/.ssh/id_rsa.pub | ssh <B的用户名>@<B的公网IP> "cat >> ~/.ssh/temp_pubkey"
# 从 B 上传到 C
ssh <C的用户名>@<C的局域网IP> "cat >> ~/.ssh/authorized_keys" < ~/.ssh/temp_pubkey
rm ~/.ssh/temp_pubkey

3.4 配置 SSH 跳板规则

编辑 ~/.ssh/config

Host B
    HostName <B的公网IP>
    User <B的用户名>
    IdentityFile ~/.ssh/id_rsa

Host C
    HostName <C的局域网IP>
    User <C的用户名>
    ProxyJump B
    IdentityFile ~/.ssh/id_rsa

3.5 配置 VS Code

  1. 安装 Remote-SSH 插件
  2. 打开命令面板(Ctrl+Shift+P)
  3. 输入 Remote-SSH: Add New Host
  4. 选择配置的主机 C

4. 常见问题排查

  1. 创建 .ssh 目录:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
  1. 设置权限:
chmod 600 ~/.ssh/authorized_keys
  1. 修复 Windows 换行符:
dos2unix id_rsa.pub

5. 总结

本文详细介绍了通过 SSH 跳板机实现免密码登录的完整流程,包括公钥配置、权限设置和工具支持等。通过合理配置,可以显著提高复杂网络环境下的开发效率。


http://www.niftyadmin.cn/n/5840333.html

相关文章

【SQL】SQL注入知识总结

介绍 SQL是操作数据库数据的结构化查询语言&#xff0c;网页的应用数据和后台数据库中的数据进行交互时会采用SQL。SQL注入是将Web页面的原URL、表单域或数据包输入的参数&#xff0c;修改拼接成SQL语句&#xff0c;传递给Web服务器&#xff0c;进而传给数据库服务器以执行数据…

记4(可训练对象+自动求导机制+波士顿房价回归预测

目录 1、TensorFlow提供自动求导机制2、自动求导机制&#xff1a;2.1、GradientTape&#xff1a;&#xff08;是一个上下文管理器对象&#xff09;2.2、 watch_accessed_variables、tape.wahtch&#xff1a;监视可训练变量2.3、二阶导数&#xff1a;两次GradientTape2.4、对向量…

C语言------指针从入门到精通

第一部分: 前言: 本篇文章主要划分为两大部分: 第一部分适合零基础的同学,主要学习了解指针的概念&#xff0c;对指针大概有个概念。如果你已经有基础,即可跳过第一部分的内容。 第二部分主要是分解指针的实现逻辑,通过19个例子,再结合代码公式把不同类型的指针及指针的应用详细…

Web3技术详解

Web3技术代表着互联网技术的最新进展&#xff0c;它致力于打造一个去中心化的互联网生态系统。以下是对Web3技术的详细解析&#xff1a; 一、Web3技术的核心概念 Web3是第三代互联网技术的代名词&#xff0c;代表着去中心化、区块链驱动和用户自有控制的理念。在Web3的世界中…

使用pandas的read_excel()报错:

ImportError: Unable to import required dependencies: numpy: Error importing numpy: you should not try to import numpy from its source directory; please exit the numpy source tree, and relaunch your python interpreter from there. 问题原因&a…

Memcached数据库简单学习与使用

Memcached 是一款高性能的分布式内存缓存系统&#xff0c;通常用于加速动态Web应用程序&#xff0c;通过减少数据库的负载来提升性能。Memcached的基本原理很简单&#xff1a;它通过将数据存储在内存中&#xff0c;减少数据库的访问频率&#xff0c;从而提高应用程序的响应速度…

Linux网络 HTTP cookie 与 session

Cookie 定义与功能&#xff1a;Cookie是服务器发送到用户浏览器并保存在本地的一小块数据&#xff0c;它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常&#xff0c;它用于告知服务端两个请求是否来自同一浏览器&#xff0c;如保持用户的登录状态、记录…

C++:虚函数与多态性习题2

题目内容&#xff1a; 编写程序&#xff0c;声明抽象基类Shape&#xff0c;由它派生出3个派生类&#xff1a;Circle、Rectangle、Triangle&#xff0c;用虚函数分别计算图形面积&#xff0c;并求它们的和。要求用基类指针数组&#xff0c;使它每一个元素指向一个派生类对象。 …