找 ngrok alternative 時,找到這個用 ssh 指令就可以破牆,挺方便的。
例子1
Port forwarding在 A 電腦裡輸入
ssh -R 80:localhost:3000 serveo.net按下 yes,會拿到一個類似 https://talis.serveo.net 的網址,當從另外一台電腦連到此網址時,會連接到 A 電腦的 port 3000
P.S.
- 要拿到不一樣的網址,就帶 username,例如:ssh -R 80:localhost:8888 foo@serveo.net
- localhost 可以替換為其他電腦,例如 192.168.1.1
例子2
ssh port forwarding在 A 電腦裡有 SSH server,然後輸入
ssh -R myalias:22:localhost:22 serveo.net接著在其他電腦有 ssh client 的電腦裡輸入
ssh -o ProxyCommand="ssh -W myalias:22 serveo.net" user@myalias就可以連接到 A 電腦的 SSH server
P.S.
- OpenSSH client 7.3 以後可以用 -J 參數:ssh -J serveo.net user@myalias
用 autossh 自動重連
事前預備- sudo adduser –system –group –disabled-password autossh
- sudo chsh –shell /bin/false autossh
- 預先使用 autossh ,執行過一次 autossh 指令
autossh + upstart
# /etc/init/autossh.conf # http://logan.tw/posts/2014/12/15/autossh-and-ubuntu-upstart-daemon/ description "autossh daemon for ssh tunnel" start on net-device-up IFACE=br0 # 此處需因應網路裝置來調整為 eth0, eth1 ... stop on runlevel [01S6] setuid autossh respawn respawn limit 5 60 script #export AUTOSSH_FIRST_POLL=30 #export AUTOSSH_GATETIME=0 #export AUTOSSH_POLL=60 autossh -M 0 -R pokemon22:22:localhost:22 serveo.net end script
autossh + systemd
# /etc/systemd/system/autossh.service # https://gist.github.com/thomasfr/9707568 [Unit]Description=Keeps a tunnel to 'serveo.net' open After=network-online.target [Service] User=autossh # -p [PORT] # -l [user] # -M 0 --> no monitoring # -N Just open the connection and do nothing (not interactive) # LOCALPORT:IP_ON_EXAMPLE_COM:PORT_ON_EXAMPLE_COM # ExecStart=/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -p 22 -l autossh remote.example.com -L 7474:127.0.0.1:7474 -i /home/autossh/.ssh/id_rsa ExecStart=/usr/bin/autossh -M 0 -R pokemon22:22:localhost:22 serveo.net [Install] WantedBy=multi-user.target
沒有留言:
張貼留言