如何把电脑变成服务器然后使用 ssh 远程登录

2019-02-19 12:03:47 +08:00
 itgoyo

个人比较喜欢 linux,还有 Mac OS 环境,但是由于公司设备原因只能使用 Windows 设备,但在上面使用起来极其不顺手,所以想到了这样一种远程访问的方式

当然了,市面上已经有很多好的产品了例如Teamviewer,这种工具,但是我在使用这个软件的时候感觉到有些卡顿或者说是延迟,对于强迫症患者的我,使用起来极其不舒服,而且我平时使用也基本用不到图形化界面,所以想办法使用ssh连接即可。

但是用家里电脑作为一个服务器有一个问题,就是 ip 地址不是公网地址,导致外网的人想访问,类似我在公司想使用自己电脑的时候是不能访问到的,所以我们先要把我们电脑的地址搞成公网的地址,用到的软件ngrok

官网地址 https://ngrok.com/

使用方法

这样子就可以在后台查看到相应的公网地址

然后在电脑主机(也就是作为服务器的电脑)运行一下代码

./ngrok tcp 22

然后就可以参看到地址了

Session Status                online
Account                       浮 生 甲 第  (Plan: Free)
Version                       2.2.8
Region                        United States (us)
Web Interface                 http://127.0.0.1:4041
Forwarding                    tcp://0.tcp.ngrok.io:12345 -> localhost:22

然后远程电脑可以使用客户端putty或者fianlshell等 ssh 工具登录到远程主机,对于新人个人比较推荐使用finalshell 主机的地址
ssh myuser@0.tcp.ngrok.io -p12345

-p 其实是端口号上面端口号就是 12345

连接成功之后,他会询问你用户名还有密码的,验证成功之后就可以正常远程登录了,祝你成功。


更新!!!现在已经切换成此种方式

貌似端口号每次启动都不会改变,这样子方便许多 软件更换为Sunny-Ngrok

官网: https://www.ngrok.cc/

自己申请账号,然后购买免费的香港服务器-创建 tcp 服务

软件下载地址: https://www.ngrok.cc/download.html

使用方法

./sunny clientid 隧道 id(id 自己参看自己创建的 tcp 服务后台可以查看)

启动多个隧道

./sunny clientid 隧道 id,隧道 id

使用ssh软件登陆的时候记得不要带上 tcp,只要写后面的域名即可还有相应的端口号即可

感觉这个比之前的ngrok搭建起来和链接起来比较方便

开机自启动服务脚本

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          ngrok.cc
# Required-Start:    $network $remote_fs $local_fs
# Required-Stop:     $network $remote_fs $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: autostartup of ngrok for Linux
### END INIT INFO

NAME=sunny
DAEMON=/usr/local/bin/$NAME
PIDFILE=/var/run/$NAME.pid

[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
      if [ -f $PIDFILE ]; then
        echo "$NAME already running..."
        echo -e "\033[1;35mStart Fail\033[0m"
      else
        echo "Starting $NAME..."
        start-stop-daemon -S -p $PIDFILE -m -b -o -q -x $DAEMON -- clientid 隧道 id || return 2
        echo -e "\033[1;32mStart Success\033[0m"
    fi
    ;;
  stop)
        echo "Stoping $NAME..."
        start-stop-daemon -K -p $PIDFILE -s TERM -o -q || return 2
        rm -rf $PIDFILE
        echo -e "\033[1;32mStop Success\033[0m"
    ;;
  restart)
    $0 stop && sleep 2 && $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac
exit 0

文件保存为 xx.sh 文件,上面的隧道 id 改成你自己的 id

添加到 Mac 开机自启动服务

系统偏好设置-用户与群主-登录项-+刚刚的 sh 脚本

11130 次点击
所在节点    程序员
50 条回复
lhstock
2019-02-19 12:17:15 +08:00
真绕 在家弄个内网穿透不就行了。你在公司弄有什么意义。
itgoyo
2019-02-19 12:25:23 +08:00
@lhstock 我弄的就是家里的啊
brotherlegend
2019-02-19 12:36:30 +08:00
没看明白,是科普 ngrok 吗? 我们小白用 frp
yuanshuai1995
2019-02-19 12:37:47 +08:00
我是打电话给运营商让他给我分配一个公网 ip,重启下猫就好了···
vinsec
2019-02-19 12:41:27 +08:00
@yuanshuai1995 运营商管公网 ip 叫专线,貌似非常贵,你怎么操作的?
yuanshuai1995
2019-02-19 12:53:07 +08:00
@vinsec #5 不是,这个公网 ip 是动态获取的 不是一个固定的 ip
jowan
2019-02-19 12:55:52 +08:00
ngrok 开源版的有内存泄露问题
推荐使用 frp 稳定使用 1 年多了
itgoyo
2019-02-19 12:56:42 +08:00
@yuanshuai1995 ngrok-sunny 每次都是固定的,不然我也不会从 ngrok 换到 ngrok-sunny,之前的 ngrok,确实每次都会变
itgoyo
2019-02-19 13:01:23 +08:00
@yuanshuai1995 你运营商这种更好,绝对的,哪里还需要倒弄那么多,如果运营商给分配的话,羡慕。我这是租房的,也不知道能不能弄。
snoopygao
2019-02-19 13:38:53 +08:00
我的宽带有公网 IP
jmc891205
2019-02-19 13:41:06 +08:00
在稍大一点的公司 第二天 IT 部就给你发警告邮件抄送你老板了
JackyCDK
2019-02-19 14:09:55 +08:00
win10 使用 wsl 呗
hanxiV2EX
2019-02-19 14:13:10 +08:00
这是科普通过 ngrok 实现内网开放端口到公网的教程。
Daming
2019-02-19 14:14:48 +08:00
frp、ddns
zpf124
2019-02-19 14:15:06 +08:00
ngrok 和 frp 大家支持哪个
zpf124
2019-02-19 14:18:32 +08:00


我是 ddns+端口映射就可以解决问题。
xiaoxinshiwo
2019-02-19 14:20:17 +08:00
花生壳
whusnoopy
2019-02-19 14:20:19 +08:00
电信联通都比较容易能申请到公网 IP,打客服电话说要求公网 IP 就行了,只是每次拨号后获取到的都可能变,所以需要有一个反向指向的能力

我在 dnspod.cn 托管了自己的一个域名,其中一个子域名用来指向家里的地址,跑一个脚本检查自己本地的 IP 有没变化,如果变了则通过 dnspod 的 API 去更新域名解析的地址

运营商可能会封常见端口,所以在自己家的路由器上可能还需要做端口映射,把某个大号外部端口映射到内网机器的 22 端口,同时自家路由器在做静态 IP 分配,保证同一台机器拿到是同一个 IP

如果公司用的 Windows 10,直接装个 WSL 解决问题,没上面那么多乱七八糟的事情
Les1ie
2019-02-19 14:21:08 +08:00
以前 Ngork 现在 frp, 然而硬伤自己延迟低的服务器都是小水管,大水管的延迟高 :(
beidahuangdehu
2019-02-19 14:22:17 +08:00
直接内网穿透就行了,怎么这么复杂呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/536479

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX