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

avatar
作者
猴君
阅读量:0

目录

一、创建密钥绑定实例

在这里插入图片描述

创建密钥会自动下载一个私钥,把这个私钥复制到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秒 } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!