当前位置:   article > 正文

腾讯云服务器之ssh远程连接登录及转发映射端口实现内网穿透(实现服务器访问本地电脑端口)_ssh端口转发 内网穿透

ssh端口转发 内网穿透

一、创建密钥绑定实例

在这里插入图片描述

创建密钥会自动下载一个私钥,把这个私钥复制到c盘

在这里插入图片描述

二、设置私钥权限

1、删除所有用户权限

在这里插入图片描述

在这里插入图片描述

2、添加当前用户权限

查看当前用户名

echo %USERNAME%
  • 1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果更改了密钥要执行下面代码

ssh-keygen -R 175.xxx.xxx.154
  • 1

三、ssh远程连接到服务器

ssh ubuntu@175.xxx.xxx.112 -i C:\Crack\cs2.pem
  • 1

四、修改root密码

sudo passwd root
su root
  • 1
  • 2

五、端口转发(实现服务器访问本地电脑的端口)

本地电脑cmd执行

ssh -R 8080:127.0.0.1:8080 ubuntu@175.xxx.xxx.154  -i C:\Crack\cs2.pem  # 访问服务器的本地端口,即是访问本地电脑的端口
# 或者
# ssh -L 8080:127.0.0.1:8080 ubuntu@175.xxx.xxx.154  -i C:\Crack\cs2.pem  # 访问本地电脑的端口,即是访问服务器localhost的端口
  • 1
  • 2
  • 3

linux执行访问命令

curl http://127.0.0.1:8080/sign
  • 1

可以看到输出了我在本地电脑搭建的网络响应内容

在这里插入图片描述

查看端口绑定信息,linux执行

netstat -tnlp4 | grep 8080
  • 1

可以看到绑定的只是服务器的本地端口,别人访问服务器公网ip肯定访问不了

在这里插入图片描述

六、实现公网ip访问本地电脑http服务(即别人通过服务器公网ip即访问你本地电脑网络服务)

先退出上面端口转发,登录服务器linux执行

su
vim /etc/ssh/sshd_config
  • 1
  • 2

找到这个并取消注释改为yes

在这里插入图片描述

服务器linux执行命令,重启sshd服务(或者重启服务器也行)

systemctl   stop     sshd
systemctl   start     sshd
  • 1
  • 2

打开cmd执行

ssh -R 8080:127.0.0.1:8080 ubuntu@175.xxx.xxx.154  -i C:\Crack\cs2.pem
# ssh -f -N -R 8080:127.0.0.1:8080 root@175.xxx.xxx.154 -i C:\altk.pem  # 后台运行,即关闭cmd窗口也可以
  • 1
  • 2
netstat -tnlp4 | grep 8080
  • 1

在这里插入图片描述

可以看到绑定了0.0.0.0地址,即别人可以通过公网ip访问到你本地电脑的http服务(记得腾讯云后台防火墙打开端口)

七、ssh保持长连接

sudo vim /etc/ssh/sshd_config
  • 1

修改下面这两个

ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接
ClientAliveCountMax 999999999 #server发出请求后,客户端没有响应得次数达到999999999,就自动断开连接,正常情况下,client不会不响应
  • 1
  • 2

八、设置若ssh连接断开则自动重连(保证ssh长期稳定)

新建一个ssh-tunnel.ps1文件,里面内容如下,若服务器内网穿透的端口无法访问则可能ssh断开连接了,则需要重连

while ($true) {
    Write-Host "start run!"
    $url = "http://175.xxx.xxx.154:8080/sign"
    $flag = 0
    try {
    $response = Invoke-WebRequest -Uri $url -Method Head -ErrorAction Stop -TimeoutSec 3
    Write-Host "request success! $($response.StatusCode)"
} catch {
    Write-Host "request fail! $url"
    $flag = 1
}

    if ($flag) {
        Write-Host "ssh connect..."
        ssh -R 8080:127.0.0.1:8080 ubuntu@175.xxx.xxx.154 -i C:\tk.pem
		Write-Host "ssh connect closed!"
    }
    Start-Sleep 6  # 设置重连时间
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

powershell管理员执行ssh-tunnel.ps1文件即可

./ssh-tunnel.ps1
  • 1

需要一直打开powershell窗口

使用下面代码也可以

$maxRetries = 10
$retryCount = 0
while ($retryCount -lt $maxRetries) {
    try {
        Write-Host "Start connect..."
        ssh -R 8080:127.0.0.1:8080 ubuntu@175.xxx.xxx.154 -i C:\tk.pem
        $retryCount = 0 
    } catch {
        Write-Host "Connection failed!"
        $retryCount++
    }
    Start-Sleep -Seconds 10   # 重连等待10秒
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1008149
推荐阅读
相关标签
  

闽ICP备14008679号