美文网首页LinuxNetwork
SSH隧道打洞访问内网机器

SSH隧道打洞访问内网机器

作者: Jerry_1116 | 来源:发表于2022-06-02 17:41 被阅读0次

1 实验环境

  • 内网机器A:192.168.55.114,用户是userA/passwordA,本地SSH端口是23,机器名称domainA
  • 公网可以访问的机器G: 11.66.99.100,已有用户userG/passwordG,ssh端口是22

2 环境配置

为了预防SSH通道一段时间没有操作或者网络抖动自动断开,进行如下2.1和2.2的配置。

2.1 Server(G)配置

$ sudo vim /etc/ssh/sshd_config

修改三个参数:

TCPKeepAlive=yes
ClientAliveInterval 15             #服务端主动向客户端请求响应的间隔
ClientAliveCountMax 1000    #服务器发出请求后客户端没有响应的次数达到一定值就自动断开
$ sudo service sshd restart

2.2 Client(A)配置

$ sudo vi /etc/ssh/ssh_config

修改以下3个参数:

TCPKeepAlive=yes
ServerAliveInterval 30                #客户端主动向服务端请求响应的间隔
ServerAliveCountMax 1000       #客户端发出请求后服务端没有响应的次数达到一定值就自动断开

以上三个参数均可以在SSH命令行中通过-o {option-key}={option-value}进行指定。

3 建立SSH隧道

在机器A上执行以下模式的SSH命令:
sudo ssh -N -f -R{global-tunnel-port}:{local-host}:{local-ssh-port} {global-user}@{global-host} -p{global-ssh-port} -o {ssh-option-name}={value}

  • -f,运行后台
  • -N,不要执行远程命令。对于仅用于防护的端口非常有用。
    示例:
$ sudo ssh -N -f -R8888:192.168.55.114:23 userG@11.66.99.100 -p22 -o ServerAliveInterval=60`
The authenticity of host '[11.66.99.100]:22 ([11.66.99.100]:22)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[11.66.99.100]:22' (ECDSA) to the list of known hosts.
userG@11.66.99.100's password: #enter password passwordG, and press Enter

4 从服务器G访问内网机器A

登录公网机器G,打开Terminal。

$ sudo ssh -p 8888 userA@127.0.0.1
# 相关连接指纹信息确认输入 yes
userA@127.0.0.1's password: # enter password passwordA, and press Enter to login machine A.
userA@domainA:~$ 

5 常见问题解决

5.1 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

  • 现象描述
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
...
ECDSA host key for [127.0.0.1]:8888 has changed and you have requested strict checking.
Host key verification failed.
  • 原因分析
    OpenSSH会把每个访问过的计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告。
    该错误原因是本地的SSH协议信息失效了。SSH连接相同的ip:port时因有连接记录直接使用失效的协议信息去验证该服务器(ip:port),所以会报错。

  • 解决方法
    清除known_hosts里旧缓存公钥信息。

$ sudo ssh-keygen -R [127.0.0.1]:8888

以上命令会将~/.ssh/known_hosts中所有[127.0.0.1]:8888开头的公钥缓存信息进行清除。

【参考】
用 SSH 命令打洞
ssh反向隧道实现内网穿透
实用操作:SSH内网穿透
内网渗透-老鼠打洞之SSH隧道
SSH连接总是定期断掉的解决办法
host key for (ip地址) has changed and you have requested strict checking

相关文章

  • SSH隧道打洞访问内网机器

    1 实验环境 内网机器A:192.168.55.114,用户是userA/passwordA,本地SSH端口是23...

  • 搭建ssh反向隧道

    实现外网利用ssh反向隧道访问内网主机 准备 实现内网穿透都需要一台外网主机,而且是可以访问的 内网主机A IP:...

  • ssh隧道打洞

    作为一名程序猿可能会碰到本地处理生产数据的问题,一般生产都会有从库可以进行进行查询操作,如果配有跳板机则是不能直接...

  • ssh跳板机

    SSH 通过跳板机直接访问内网机器 - 知乎 (zhihu.com)[https://zhuanlan.zhihu...

  • ssh隧道用于调试

    相关阅读 SSH隧道与端口转发及内网渗透 | 个人博客 SSH隧道技术----端口转发,socket代理 | 博客...

  • ssh隧道实现nat穿透

    关于ssh隧道原理自行百度 本次我是为了在异地访问内网的linux,前提是要有一台外网的服务器ssh -CNf -...

  • SSH反向代理穿透内网

    需要反向转发和正向代理相结合 一、通过内网机器反向连接VPS 在需要访问的内网主机上执行 ssh -p 22 -q...

  • 2019-02-19 ssh隧道访问以及查看docker容器js

    ssh 隧道访问: ssh -L 5901:127.0.0.1:7069 username@host 本地 访问5...

  • ssh隧道穿透内网

    应用场景:现有inner_server、 online_server、 client 三台设备:inner_ser...

  • ssh 内网穿透隧道

    使用场景 一般是在内网下,A机房可以访问B机房,B机房可以反问 C机房,A机房不能反问C机房 主机A 需要ssh到...

网友评论

    本文标题:SSH隧道打洞访问内网机器

    本文链接:https://www.haomeiwen.com/subject/zemqmrtx.html