1 ss命令简介
ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。
ss命令简介
2 常用选项
-h, --help 帮助
-V, --version 显示版本号
-t, --tcp 显示 TCP 协议的 sockets
-u, --udp 显示 UDP 协议的 sockets
-x, --unix 显示 unix domain sockets,与 -f 选项相同
-n, --numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"
-l, --listening 只显示处于监听状态的端口
-p, --processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a, --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r, --resolve 把 IP 解释为域名,把端口号解释为协议名称
3 常见用法
如果不添加选项 ss 命令默认输出所有建立的连接(不包含监听的端口),包括 tcp, udp, and unix socket 三种类型的连接:
31 查看前5名的连接:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 20040 20041
u_str ESTAB 0 0 20030 20031
u_str ESTAB 0 0 20044 20043
u_str ESTAB 0 0 /run/dbus/system_bus_socket 18592 18591
32 查看主机的监听端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127001:9016 :
LISTEN 0 128 127001:9017 :
LISTEN 0 100 127001:25 :
LISTEN 0 128 127001:9018 :
LISTEN 0 128 127001:1723 :
LISTEN 0 128 127001:9019 :
33 linux查看tcp连接
ESTAB 0 0 ::1:ssh ::1:53238
ESTAB 0 0 ::1:53278 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53280
ESTAB 0 0 ::1:53288 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53296
ESTAB 0 0 ::1:53294 ::1:ssh
ESTAB 0 0 ::1:48456 ::1:ssh
ESTAB 0 0 ::1:53286 ::1:ssh
ESTAB 0 0 ::1:53292 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53272
linux查看tcp连接
34 解析IP和端口号
使用-r选项
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 my_public_ip:9016 :
LISTEN 0 128 my_public_ip:9017 :
LISTEN 0 100 localhost:smtp :
LISTEN 0 128 my_public_ip:9018 :
LISTEN 0 128 my_public_ip:pptp :
LISTEN 0 128 my_public_ip:9019 :
linux查看监听端口
35 输出时带进程名称
使用-p选项
Total: 2340 (kernel 2365)
TCP: 2126 (estab 72, closed 23, orphaned 1, synrecv 0, timewait 2/0), ports 0
Transport Total IP IPv6
36 根据条件过滤输出结果
可以通过语法过滤输出结果,根据源IP、源端口、目标IP、目标端口
src源
dst目标
ss dst 172162633
ss dst 172162643:>基于SSH协议开发的一款远程管理服务程序通常被称为SSH服务器(SSH Server),它是一种可以在远程计算机上运行的软件,用于提供SSH协议的访问和管理功能。
SSH(Secure Shell)是一种安全的网络协议,它可以通过加密通信方式实现远程计算机与客户端之间的安全通信。基于SSH协议开发的远程管理服务程序,可以使用SSH协议连接到远程计算机,并提供以下功能:
1 远程登录:用户可以通过SSH协议连接到远程计算机,并执行命令或 *** 作远程计算机。这种连接方式可以保证通信过程中不被窃听或篡改。
2 文件传输:SSH服务器可以支持SCP(Secure Copy)或SFTP(SSH File Transfer Protocol)文件传输协议,用户可以使用这些协议将文件从本地计算机传输到远程计算机或从远程计算机下载文件到本地计算机。
3 用户管理:SSH服务器可以通过配置访问控制列表(ACL)限制用户访问权限,还可以限制用户对系统的 *** 作权限,并记录所有的用户登录和 *** 作日志。
4 系统管理:SSH服务器可以提供一些系统管理工具,例如远程终端程序、进程监控、系统日志查看等。
一些常见的基于SSH协议开发的远程管理服务程序包括OpenSSH、PuTTY SSH、Tectia SSH等。这些程序通常在Linux、Unix和Windows等平台上都可以运行。
A能访问B, A不能访问C, B不能访问A, B能访问C
那么,我想想上Google,该怎么办
-N 不执行任何命令
-f 后台运行
-L参数的行为。-L X:Y:Z的含义是,将IP为Y的机器的Z端口通过中间服务器B映射到本地机器的X端口
那么,在A上访问127001:2121就是访问C的网站了
在A上执行
然后在B上执行
使用SSH的方式不够稳定,使用AutoSSH可以自动在连接断开时自动重连,再把AutoSSH加入系统服务自动启动,则可以做到稳定的连接
1安装AutoSSH
2执行AutoSSH命令
-M:在5555端口上监听连接的变化,只要断开就重连
少了-f 参数,因为AutoSSH本来就在后台运行
有A,B,C 3台服务器, A,C有公网IP, B是某IDC的服务器无公网IP A通过B连接C的80端口(A=>B=>C),
那么在B上执行如下命令即可:
-D port
指定一个本地机器 “动态的'’ 应用程序端口转发 工作原理是这样的,
本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接,
该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接
目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器 只有 root 才能转发特权端口 可以在配置文件中指定动态端口的转发
通过provixyl这样代理软件,全局代理(就是把所有的A电脑上访问所有ip,0000 都转发到本地1080端口)
同时把访问的那些ip映射到B服务器, 让B去访问 最终就是A 利用 B作为跳板, 访问了那些IP
{办公电脑A, 公司内网服务器B(内网192xxx), [AB在同一个局域网]}, 生产环境上的C(内网ip:101440x)
A能链接B,不能链接C, B能链接C(同过一台公网服务器, 上面介绍到的, 公网访问内网)
实现B(192xxx)链接C(通过一台公网服务器D) B通过D连接C的8000端口(B=>D=>C)
接收有A访问的ip, 如101440x:80, 通过provixyl这样软件, 把接收到的101440x转发到本地1080端口
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)