1. ssh [email protected]115.28.87.102
(直接使用ssh的连接方式连接到远程主机,而不是使用http,ftp等方式连接到具体远程主机)
退出并注销关闭连接 exit
2.left-connection(左连接 正向连接)
1 ssh -L client_ip(可省略,省略则为默认值127.0.0.1):client_port 2 :server_ip(服务器那端能访问的ip地址a):server_port(a的端口) 3 登录服务器的用户名@服务器ip -p server_port(服务器ssh的端口 默认:22) 4 5 有默认值所以可以不加-p 另外服务器ip也可以像http协议那样用域名替代
具体解释:
我的ip是在某路由器的局域网内 192.168.1.104 在本地打开一个端口7900 然后左连接服务器http://test.conglinnet.com/ (此网站在服务器ip 115.28.87.102上)
此时和我同一局域网内的比如192.168.1.106 在本地浏览器键入 192.168.1.104:7900 将打开 http://test.conglinnet.com/的网页
ssh -L 192.168.1.104:7900:test.conglinnet.com:80 [email protected]
此时所有 发往192.168.104:7900端口的请求将通过192.168.1.104的7900端口通过发向和它连接的ssh远程主机(115.18.87.102)上的指定端口,
同时请求的响应也会返回给我的7900端口 别人访问我的7900端口就可以看到目前7900端口上的数据
所以很明显 会发生这样的情况 远程主机并不知道我的7900端口背后发送的请求实际上是哪一台设备
而支持通过7900端口ssh传送过去的请求支持ftp ,ssh,http等但是好像不支持vpn,因为不支持gre协议
一句话重点:把server能访问的机器地址和端口(当然也包括server自己)镜像到client的端口上
right-connection-右连接 反向连接
1 ssh -R server_ip(可省略,省略则为默认值127.0.0.1):server_port: 2 client_ip(客户端这边能访问的ip地址d):client_port(d能访问的端口) 3 登陆服务器的用户名@服务器IP -p [服务器ssh服务端口(默认22)] 4
具体解释:
我有一台个人pc 或者自己买了性能比较强大的电脑 想做一台web上的服务器 不幸的是全球互联网上的固定ip,这种任何人都可以访问的ip地址是有限的,目前市场还比较紧俏
但是我弄到了一个,然后我想自己这台pc映射到那台可以访问的地址上去,这样资源在我本地, 任何人可以通过访问internet上的它,由它跑到我这儿来请求
(或者说把请求转发给我的pc),由我返回响应给它,它将响应的数据给请求的任何人.
ssh -R test.conglinnet.com:8999:192.168.1.104:9000 [email protected]
这个时候的情况是 任何人访问http://test.conglinnet.com:8999 都会实际上将请求转到某局域网内的我本机(192.168.1.104)上的9000端口,而我在9000端口上开了个web服务器
note:
当然具体执行起来会有一些其它的不同,这里只是说明ssh的原理.通常实际上大概会再做一次端口转发
将服务器上的80端口转发给8999,然后任何人就可以直接访问http://test.conglinnet.com了
还有实际上的固定ip与域名,最明显的一个差别就是 一个固定ip上通常会有n个域名,否则多浪费ipv4下有限的固定ip
一句话重点:把客户端能访问的机器地址和端口(当然也包括客户端自己)镜像到服务器的端口上
这样看起来,似乎应用程序之间的通信即是端口之间的通信.
其它常用ssh片段
ssh -D client_port 登录服务器用户名@server_ip
此时firefox 或者ie里socks代理监听 本机那个client_port 就ok了
ssh -v -R 0.0.0.0:8999:0.0.0.0:9000 [email protected] //也常用0.0.0.0来监听所有地址,省心.
ssh的其它常用参数
-q 静默运行,就算出错也啥都不提示
-f 后台运行
-C 压缩,带宽很差的时候压缩会快一些,否则会更慢
-i xxx.file 提供公钥文件直接验证
-l 指定用户名,其实就是@前面写的那个。