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

一、创建密钥绑定实例

在这里插入图片描述

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

在这里插入图片描述

二、设置私钥权限

1、删除所有用户权限

在这里插入图片描述

在这里插入图片描述

2、添加当前用户权限

查看当前用户名

echo %USERNAME%

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

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

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

三、ssh远程连接到服务器

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

四、修改root密码

sudo passwd root
su root

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

本地电脑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的端口

linux执行访问命令

curl http://127.0.0.1:8080/sign

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

在这里插入图片描述

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

netstat -tnlp4 | grep 8080

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

在这里插入图片描述

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

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

su
vim /etc/ssh/sshd_config

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

在这里插入图片描述

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

systemctl   stop     sshd
systemctl   start     sshd

打开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窗口也可以
netstat -tnlp4 | grep 8080

在这里插入图片描述

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

七、ssh保持长连接

sudo vim /etc/ssh/sshd_config

修改下面这两个

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

八、设置若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  # 设置重连时间
}

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

./ssh-tunnel.ps1

需要一直打开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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云霄IT

感谢感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值