返回
Featured image of post Linux 命令 —— ssh

Linux 命令 —— ssh

ssh

隧道

场景:家里内网机器 A 想要访问公司的内网机器 B。 条件:需要一个公网机器 C(假设 IP 是 1.1.1.1)。

  • 打开公网机器的转发

  • 在 B 上执行:

ssh -p 22 -NR 0.0.0.0:10443:0.0.0.0:443 root@1.1.1.1
# 前面部分 0.0.0.0:10443:C 的信息
# 后面部分 0.0.0.0:443:B 的信息

注意:此时链接会一直保持,终端不会返回。

  • 在 A 上执行:
ssh -p 22 -NL 0.0.0.0:10443:0.0.0.0:10443 root@1.1.1.1
# 前面部分 0.0.0.0:10443:A 的信息
# 后面部分 0.0.0.0:10443:C 的信息

注意:此时链接会一直保持,终端不会返回。

此时,在 A 上通过 localhost:10443 即可访问 B 的 443。

端口映射

此方法相比上面的更为简化,直接把内网端口映射到外网设备上,直接访问外网设备映射的端口即可。

  • 修改公网设备的 ssh 配置
sudo vi /etc/ssh/sshd_config

# 设置
GatewayPorts yes

# 重启 ssh 服务
sudo systemctl restart sshd
  • 进行端口映射

在内网机器上:

ssh -p 22 -NR 0.0.0.0:10443:0.0.0.0:443 root@1.1.1.1
# 前面部分 0.0.0.0:10443:公网机器信息
# 后面部分 0.0.0.0:443:内网机器信息

注意:此时链接会一直保持,终端不会返回。

至此,端口映射完成,可以从任意可访问外网的机器上,访问 1.1.1.1:10443 即可访问到 内网机器的 443 端口。

SSH 问题

SSH 连接慢

# 可以尝试指定算法
ssh -o KexAlgorithms=ecdh-sha2-nistp521 root@192.168.1.102 -v

# 也可以尝试修改 mtu

sudo ip li set mtu 1200 dev wlan0
# OR
sudo ifconfig wlan0 mtu 1200
相信美好的事情即将发生。
Built with Hugo
Theme Stack designed by Jimmy