首页 > 其他分享 >SSH内网穿透(SSH端口转发)

SSH内网穿透(SSH端口转发)

时间:2024-07-09 16:53:39浏览次数:7  
标签:ip 端口 SSH 公网 服务器 内网 serverB ssh

一、远程端口转发

 

当有一台local主机,想要访问另一台local主机C,A和C不在同一局域网,但无法访问

且有一台公网服务器,A和C都可以向B发起SSH连接

可做以下操作实现A->C,即A访问C

C发起远程端口转发命令,实现将C和B两个端口之间的流量转发:

ssh -R serverB_port:localhost:localC_port  serverB_username@serverB_ip

例如:ssh -R 8800:localhost:22  serverB_username@serverB_ip

注:localhost可换成127.0.0.1

 这样A通过8800这个端口连上公网服务器B,即可访问localC

ssh -p 8800 serverB_username@serverB_ip

 

二、使用SSH公钥认证进行SSH内网穿透的一般步骤

1、生成密钥对:

在本地计算机上生成SSH密钥对,包括公钥和私钥。可以使用以下命令生成RSA密钥对:

ssh-keygen -t rsa -b 4096
回车(默认即可)
回车
该命令将生成一个名为 id_rsa 的私钥文件和一个名为 id_rsa.pub 的公钥文件。

注:任何地方使用ssh-keygen生成的秘钥对都可以使用,只有ssh-keygen生成的秘钥对才可以使用

2、将公钥添加到公网服务器上:将生成的公钥文件(id_rsa.pub)内容复制到公网服务器上的 ~/.ssh/authorized_keys 文件中。
可以使用以下命令将公钥复制到公网服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub user@host(具体能否使用没有验证)

3、配置SSH服务:在公网服务器上,确保SSH服务已启用并允许通过公钥认证进行登录。
编辑公网服务器上的SSH服务器配置文件(通常是 /etc/ssh/sshd_config),确保以下配置被启用:

PubkeyAuthentication yes
保存并重启SSH服务 systemctl restart sshd

4、进行SSH内网穿透:使用以下命令在C设备上建立SSH连接并进行内网穿透:

ssh -i ~/.ssh/id_rsa -R serverB_port:localhost:localC_port serverB_username@serverB_ip
-i 是指定私钥所在的位置
-o "UserKnownHostsFile=/tmp/known_hosts" //指定known_hosts文件生成的位置
-o "StrictHostKeyChecking=no" //设置对不安全的级别

完成上述步骤后,你应该能够通过本地计算机上的指定端口访问C设备了,实现SSH内网穿透。

5、windows cmd运行命令 ssh -p serverB_port serverB_username@serverB_ip ,就可访问到C设备

 

三、使用密码进行SSH内网穿透

主要根据参考https://www.lxlinux.net/13043.html 中的方法来配置。

步骤如下:

1.在公网服务器(已经安装并启动了sshd服务)上,修改/etc/ssh/sshd_config,添加一行 GatewayPorts yes 。然后重启sshd服务:systemctl restart sshd

2.找一台C设备(可连上公网),在其上运行命令ssh -l公网服务器用户名 -p 设备C端口 -qngfNTR 公网服务器端口:localhost:设备C端口 公网服务器ip -o ServerAliveInterval=10,提示输入密码时输入密码 。就完成了端口映射
3.随便找一台带有ssh客户端且能连上公网的pc机,运行命令 ssh -p 公网服务器端口 serverB_username@serverB_ip ,就可访问到C设备
4.若需要将这些操作写成代码,在程序上运行,则需要sshpass将密码带进去,实现登录
5、windows cmd运行命令 ssh -p serverB_port serverB_username@serverB_ip ,就可访问到C设备

标签:ip,端口,SSH,公网,服务器,内网,serverB,ssh
From: https://www.cnblogs.com/xxb8888xxb/p/18292289

相关文章

  • ip和端口基础知识
     TCP/IP体系结构-网络通信的基础 HTTP协议-网站访问的基础 其他协议-HTTPS、ARP、ICMP、DNS①什么是ip地址 <1>IP地址是电子设备在互联网上的唯一标识 <2>用来在互联网中寻找电脑②内网ip和公网ip <1>内网ip:路由以内的网络,可以连接互联网,但是互联网无法直接......
  • linux centos8升级openssh与openssl
    LinuxOpenSSH升级升级openssh之前需要先升级openssl 1、升级准备##1.1、查看系统版本和ssh版本linux系统版本cat/etc/redhat-release#或者uname-aopenssh查看一下原安装版本ssh-Vopenssl查看一下原安装版本opensslversion 1.2、下载软件包Opens......
  • vscode 远程连接 Ubuntu (SSH)
    安装对应的拓展包显示所有的命令(Ctrl+Shift+p)获取虚拟机的ipsudoaptinstallnet-toolsifconfig进行连接如果连接的时候报错(管道不存在)在Ubuntu中打开ssh服务即可如果连接了很久没有连上(Permissiondenied(publickey).)sudoservicesshrestart......
  • Centos7防火墙firewalld基本配置与端口转发
    1.firewalld基本介绍    Centos7开始已经放弃iptables,转而使用firewalld。从本质意义上讲,iptables和firewalld是防火墙软件,其实现方式都是调用内核Netfilter。firewalld提供了一个动态管理的防火墙,形成网络“zones”规则集,具备支持ipv4和ipv6的能力。firewalld程序提供了......
  • 不定时修改Linux服务器端口和密码
    最近总是不想动,服务器的安全又不得不考虑,有时候还会忘记修改服务器的端口和密码,就诞生了下面的Shell脚本。脚本包含了日志记录,备份SSH文件,修改SSH端口,修改SSH密码,更新防火墙、发送加密邮件,设置定时任务。脚本目前只在Ubuntu系统测试,其它系统未测试,以下标红的信息一定要看。注意......
  • mac升级系统后ssh登录服务器问题
    报错信息:Unabletonegotiatewith111.111.113.86port123:nomatchinghostkeytypefound.Theiroffer:ssh-rsa分析:原因是MacosVentura13.0升级了ssh到9.0,ssl到3.3.6,而服务器上的sshd还是老版本;服务器上的老版本ssh和ssl无法和mac上的新版本ssh和ssl交互,新版本ss......
  • 这一篇让你更了解GPIO_Init()函数,了解CNF和MODE是如何配置输入输出模式,GPIOX_CR端口配置
    1GPIO初始化配置函数 GPIO_Init(GPIOC,&GPIOInitStruct); 1.1  正常的初始化函数代码1.2解读GPIO_Init(GPIOC,&GPIOInitStruct); 所以GPIOC的地址为  0x40000000+0x00010000+0x00001000=0x40011000STM32F103C8T6通用与复用功能I/O(GPIO与AFIO)、......
  • 记一次sshd无法启动的修复
    centos9 启动sshd报sshd.servicenotfound实际查到的问题:/etc/systemd/system/sshd.service是个软链接,链接的文件不对,先删除后重新链接rm/etc/systemd/system/sshd.serviceln-s/lib/systemd/system/sshd.service/etc/systemd/system/sshd.servicesystemctlstartss......
  • Apifox 6月更新|定时任务、内网自部署服务器运行接口定时导入、数据库 SSH 隧道连接
    Apifox新版本上线啦!!! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性:自动化测试支持设置「定时任务」 支持内网自部署服务器运行「定时导入」数据库均支持通过SSH隧道连接自动化测试数据库操作优化 将Apifox更新至最新版,一起开启全新体验......
  • CentOS 6.5 配置国内在线yum源和制作openssh 9.8p1 rpm包 —— 筑梦之路
    CentOS6.5比较古老的版本了,而还是有一些古老的项目仍然在使用。环境说明1.更换国内在线yum源CentOS6在线可用yum源配置——筑梦之路_centos6可用yum源-CSDN博客cat>CentOS-163.repo<<'EOF'[base]name=CentOS-$releasever-Base-163.com#mirrorlist=http://m......