当前位置:首页 > CN2资讯 > 正文内容

云服务器与内网服务器连通

2天前CN2资讯


Vscode SSH使用云服务器访问内网主机

云服务器在配置策略中开放使用到的端口号,比如250和251作为使用。

首先在内网主机上使用ssh-copy-id root@云服务器公网IP,将内网主机的公钥放到服务器上

这一步必须完成,不然下面的命令无法成功建立隧道。

内网中主机使用,建立隧道

autossh -M 251 -fCNR 250:localhost:22 root@云服务器公网IP

vscode中ssh文件的配置如下:

Host aliyun HostName 云服务器公网IP User root Host jetsonNano HostName localhost User jetson Port 250 ProxyCommand ssh -A -q aliyun -W %h:%p

成功实现:使用aliyun作为跳板机来访问内网主机jetsonNano


设置开机自启动

方式一:rc.local (未验证!!)
linux中使用systemctl enable/diable xxx.service来启用或者禁止某个开机服务。

推荐写一个服务使用systemctl来控制开机执行。

但是还有对System V的兼容实现——rc-local.service

在Ubuntu系统中/etc目录下面已经不存在rc.local文件了。为此我们使用touch 新建一个rc.local文件,文件内容为:

#!/bin/bash autossh -M 251 -fCNR 250:localhost:22 root@云服务器公网IP ... 等等其他需要执行的脚本

执行chmod a+x rc.local

给rc.local文件增加可执行权限,系统将自动启用rc-local.service

执行systemctl daemon-reload之后

使用systemctl list-dependencies multi-user.target | grep rc可以验证服务每次开机启动之后将会被执行。

方式二:编写service文件 (验证可以!!)

创建/etc/systemd/system/NanoSshTunnel.service 文件,内容为:

[Unit] Description=ssh tunnel author-shuiyihang Wants=network-online.target After=network-online.target [Service] Type=forking ExecStart=/usr/bin/autossh -M 251 -fCNR 250:localhost:22 -o ServerAliveInterval=20 -o ServerAliveCountMax=3 root@云服务器IP StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target

注意两点:

  • Service如果没有设置User=用户,则默认使用root,需要提前在/home/root/.ssh目录下生成公钥私钥,并使用ssh-copy-id把公钥放到服务器上。
  • Type使用forking类型!!,如果为simple,服务运行之后,会产生一个SIGTERM信号把连接关闭,触发设置KillMode=process才行,但是这样做的话使用sudo systemctl stop NanoSshTunnel.service无法结束进程。反而使用forking,可以正常关闭,和正常开机自动打开
  • 接下来执行:
    sudo systemctl enable NanoSshTunnel.servicesudo systemctl daemon-reload 想要立马启动,执行
    sudo systemctl start NanoSshTunnel.service 否则,下次重新开机也会自动执行

    补充:辅助命令查看

    systemctl status NanoSshTunnel.service 查看服务运行状态
    journalctl -u NanoSshTunnel.service 查看服务日志,前提是使用journal
    kill -l 列出所有信号值
    systemctl kill -s 15 NanoSshTunnel.service 关闭服务
    sudo systemctl start NanoSshTunnel.service启动服务
    sudo systemctl stop NanoSshTunnel.service 停止服务
    sudo systemctl enable NanoSshTunnel.service 启用服务

    机器A想不输入密码的访问B,需要把机器A的公钥放到机器B的authorized_keys里面


      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/20894.html

      分享给朋友:

      “云服务器与内网服务器连通” 的相关文章