Linux基本功杂记——[023]——「OpenSSH tunneling」
Posted 纯原创,零转载
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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> [email protected]<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> [email protected]<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 [email protected]") if [[ $count -lt 2 ]] then su fh -c "ssh -gNTR 9527:localhost:22 [email protected]" 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」的主要内容,如果未能解决你的问题,请参考以下文章
Linux基本功杂记——[018]——『Network Bonding』
Linux基本功杂记——[013]——『mdadm Raid & LVM』