首页 > 代码库 > Linux基本功杂记——[023]——「OpenSSH tunneling」
Linux基本功杂记——[023]——「OpenSSH tunneling」
SSH tunneling 相关
参考資料:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/
本地端口转发:
- 适用场景:发起端可以连接 SSH_server_host 端的 ssh 服务,但无法与最终目标 goal_host 的程序直接通信,而 SSH_server_host 可以
- 命令格式:ssh [-g] -L <local_port>:<goal_host>:<goal_port> username@<SSH_server_host>
- local_port:最初发起连接的主机端口号
- goal_host:最终目标主机的 IP 或 主机名,可以与 SSH_server_host 为同一台机器(此时 goal_host 通常设置为 localhost 或 127.0.0.1)
- goal_port:最终目标主机的端口号
- SSH_server_host:负責 SSH 转发的中间主机
- -g:此选项允许其它主机远程连接至第一台主机的 local_port 端口上,相当于进一步増加通信节点
远程端口转发:
- 适用场景:发起端无法连接 SSH_server_host 端的 ssh 服务(如:发起端是外网主机,但 SSH_server_host 是 nat 之后的内网主机),但反向连接是允许的,而且 SSH_server_host 可以与最终目标 goal_host 上的程序直接通信
- 命令格式:ssh [-g] -R <remote_port>:<goal_host>:<goal_port> username@<SSH_server_host>
- remote_host:最初发起连接的主机端口号,此处的 remote 是相对 SSH_server_host 而言的,因为这个操作需要在 SSH_server_host 上完成
- goal_host:最终目标主机的 IP 或 主机名,可以是操作此命令的本机
- goal_port:最终目标主机的端口号
- SSH_server_host:此处指 最初发起连接的主机 IP 或 主机名,因为此时的 ssh 连接是由中间主机发出的,最初的主机允当 ssh 服务器的角色
目标主机:
#!/bin/bash #dynamic domain name: fanhui.f3322.net #URL: http://www.pubyun.com http://www.3322.net Keep_Alive() { while : do count=$(ps ax | grep -c "ssh -gNTR 9527:localhost:22 fh@fanhui.f3322.net") if [[ $count -lt 2 ]] then su fh -c "ssh -gNTR 9527:localhost:22 fh@fanhui.f3322.net" fi sleep 300s done } Keep_Alive >/dev/null 2>&1 &
云端( SSH 中转站):
#!/bin/bash while : do lynx -mime_header -auth=kitex:aibbigql"http://members.3322.net/dyndns/update?system=dyndns&hostname=fanhui.f3322.net" 2>/dev/null Ip_0=$(curl http://members.3322.org/dyndns/getip) sleep 600s Ip_1=$(curl http://members.3322.org/dyndns/getip) while [[ $Ip_1 -eq $Ip_0 ]] do sleep 600s Ip_1=$(curl http://members.3322.org/dyndns/getip) done done
Linux基本功杂记——[023]——「OpenSSH tunneling」
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。