跟你心想的中ss命令TCP的部分分別代表就是一個TCP協議而已。
『貳』 linux下ps aux里頭stat為Ss,S+, Rs,Ds是什麼意思
S處於休眠狀態,靜止狀態;+位於後台的進程組,R正在運行,在可中斷隊列中,D無法中斷的休眠狀態(通常io的進程)。具體操作方法如下鎮運:
1、stat --help顯示命令幫助信息。
『叄』 linux下最常用的遠程管理工具是什麼 ss
在我們日常管理與維護伺服器個過程中,我們都需要使用遠程連接工具,今天我們就一同來總結下Linux常用的安全遠程連接工具-OpenSSH。
【遠程登錄協議】
1、telnet:是TCP/IP協議族中的一員,是Internet遠程登陸服務的標准協議和主要方式。它為用戶提供了在本地計算機上完成遠程主
機工作的能力。默認使用的是TCP的23號埠,採用C/S架構,在用戶登錄的過程中傳輸的信息都是明文信息,安全無法保障,所以不建議用telnet。
2、ssh:為Secure Shell 的縮寫,由IETF的網路工作小組所制定;SSH
為建立在應用層和傳輸層基礎上的安全協議。SSH是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議。利用 SSH
協議可以有效防止遠程管理過程中的信息泄露問題。默認使用的是TCP的22號埠,也是基於C/S架構,SSH有兩個版本v1與v2。
sshv1:基於CRC-32做MAC(消息摘要認證),不安全,強烈建議不使用;
sshv2:基於雙方主機的協商選擇使用最安全的MAC方式 ,其有如下特點:1、加密機制及MAC機制由雙方協商選定;2、基於DH實現密鑰交換,基於RSA或DSA實現身份認證;3、客戶端通過檢查伺服器端的主機密鑰來判斷是否能夠繼續通信;
【OpenSSH簡述】
OpenSSH 是一組用於安全地訪問遠程計算機的連接工具。它可以作為rlogin、rsh
rcp以及telnet的直接替代品使用。更進一步,其他任何TCP/IP連接都可以通過SSH安全地進行隧道/轉發。OpenSSH
對所有的傳輸進行加密,從而有效地阻止了竊聽、連接劫持,以及其他網路級的攻擊。OpenSSH 由 OpenBSD project 維護。
登錄過程和使用rlogin或telnet建立的會話非常類似。在連接時,SSH
會利用一個密鑰指紋系統來驗證伺服器的真實性。只有在第一次連接時,用戶會被要求輸入yes進行確認,之後的連接將會驗證預先保存下來的密鑰指紋。如果保
存的指紋與登錄時接收到的不符, 則將會給出警告。 指紋保存在 ~/.ssh/known_hosts中,對於SSHv2指紋,則是
~/.ssh/known_hosts2。
默認情況下,較新版本的OpenSSH只接受SSHv2連接。如果能用版本2則客戶程序會自動使用,否則它會返回使用版本1的模式。此外,也可以通
過命令行參數-1或-2來相應地強制使用版本1或2。 保持客戶端的版本1能力是為了考慮較早版本的兼容性,建議盡量使用版本2。
【SSH伺服器和客戶端工作流程】
OpenSSH使用C/S架構:
服務端工具(S):sshd
客戶端工具(C):ssh命令、putty、xshell、securecrt、sshshellclient;
【OpenSSH客戶端組件-ssh】
配置文本:/etc/ssh/ssh_config
使用方法:
ssh [username@] host [COMMAND]或 ssh -l username host [COMMAND]
-p PORT:指定遠程伺服器埠;
-l username:指定登錄遠程主機的用戶,不指定則使用當前用戶;
username@:等同於 -l username;
如果設置了COMMAND,表示使用username賬戶登錄遠程主機執行一次指定的命令並返回結果,不會停留在遠程主機上;
[root@www ~]# ssh 192.168.0.110 #使用root用戶登錄;
The authenticity of host '192.168.0.110 (192.168.0.110)' can't be established.
RSA key fingerprint is 01:2e:43:cc:bc:1d:f1:e5:f0:f4:89:78:74:a9:49:44.
Are you sure you want to continue connecting (yes/no)? yes #第一次連接,需手動進行確認;
Warning: Permanently added '192.168.0.110' (RSA) to the list of known hosts.
[email protected]'s password: #輸入遠程主機root賬戶的密碼;
Last login: Mon May 11 16:44:52 2015 from 192.168.0.104
[root@mailCentOS6 ~]# #登錄成功了,遠程主機名為mailCentOS6;
[root@mailCentOS6 ~]# ls #顯示遠程主機root家目錄下的文件;
2.sh boot.iso install.log sdb.mbr test1
anaconda-ks.cfg crontab install.log.syslog \temp\test
[root@mailCentOS6 ~]# exit #退出登錄;
logout
Connection to 192.168.0.110 closed.
[root@www ~]# ssh [email protected] ls #使用root登錄遠程主機,執行一次ls命令,返回結果便退出;
[email protected]'s password: #第二次連接,就不需要輸入yes了,直接輸入密碼即可;
2.sh
anaconda-ks.cfg
boot.iso
crontab
install.log
install.log.syslog
sdb.mbr
\temp\test
test1
[root@www ~]# #看到了嗎,我們當前並沒有登錄在遠程主機;
【OpenSSH伺服器端組件-sshd】
配置文件:/etc/ssh/sshd_config(通過修改此文件可以修改ssh的默認監聽埠與其他參數)
服務腳本:/etc/rc.d/init.d/sshd
服務啟動|停止|重啟:serveice sshd start|stop|restart
腳本配置文件:/etc/sysconfig/sshd
配置參數
# man sshd_config 查看配置參數的說明;
# vim /etc/sysconfig/sshd 通過編輯配置文件來修改配置參數;
#+空格+文字:以此格式開頭的行表示改行為注釋說明;
#+文字:以此格式開頭的行表示可啟用選項,不改變則表示使用該選項的默認設置,反之使用設定值「#」要去掉哦!
例:#Port 22 如不去掉#且22不變,表示使用默認的22號埠;
若把#Port 22改成port 7777,表示把sshd的監聽埠改成7777;
注意:修改參數與配置後,必須重啟服務(service sshd restart).
經常需要修改的參數:
[root@www ~]# cat /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
#Port 22 #修改默認監聽的埠;
port 7777 #把sshd的監聽埠改成7777;
#AddressFamily any #監聽的地址家族,指定是監聽在IPV4上還是IPV6上,any表示所有;
#ListenAddress 0.0.0.0 #指定監聽的地址 (0.0.0.0表示本機的所有地址);
#ListenAddress ::
# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key #使用shhv1用到的主機密鑰;
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 1024 #密鑰長度;
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m #登錄寬限期;
#PermitRootLogin yes #是否允許管理員直接登錄;
#StrictModes yes
#MaxAuthTries 6 #最大密碼輸入錯誤次數;
#MaxSessions 10 #最大會話個數;
#RSAAuthentication yes #是否允許使用RSA機制來認證;
#PubkeyAuthentication yes
#--------中間不長改變的配置參數略----------
Subsystem sftp /usr/libexec/openssh/sftp-server #表示是否啟動sftp功能;
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server
sshd認證方式:
1、基於口令的認證;
2、基於密鑰的認證;
# ssh-keygen -t rsa 用rsa演算法生成密鑰,默認密鑰為id_rsa(私鑰), id_rsa.pub(公鑰)
# ssh-keygen -f /path/to/somefile -P oldpassword 根據現有的密鑰文件生成密鑰
-f /path/to/somefile: 密鑰文件保存在的位置;
-P '': 指定生成舊密鑰時使用的密碼;
方法一:把本地主機生成的公鑰 id_rsa.pub使用scp復制到遠程主機的上,在遠程主機使用cat id_rsa.pub>>.ssh/authorized_keys追加該公鑰信息,這樣就可以實現基於密鑰認證的ssh登錄;
方法二:# ssh--id -i .ssh/id_rsa.pub USERNAME@HOST
[root@www ~]# ssh-keygen -t rsa #用rsa演算法生成密鑰;
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #指定密鑰存放路徑及名稱,一般不用
#修改,直接回車;
Enter passphrase (empty for no passphrase): #輸入私鑰密碼;
Enter same passphrase again: #確認輸入私鑰密碼;
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c2:f9:c2:3d:4d:ca:52:39:7a:a7:33:de:42:11:d3:8f [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| o . |
| o o |
| . ...E . |
| + S.. |
| . B.= |
| =.B o |
| ++= |
| .o+. |
+-----------------+
[root@www ~]# ssh-keygen -f .ssh/id_rsa -P '' #根據現有密鑰文件重新生成密鑰;
Generating public/private rsa key pair.
.ssh/id_rsa already exists.
Overwrite (y/n)? y #提示是否確定要覆蓋;
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
bf:55:f0:0b:a5:ee:4e:4a:1d:d3:b1:0e:66:ee:55:9b [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . o |
| * o |
| S O = .|
| . * B oo|
| o * +E |
| . B . |
| o.+ |
+-----------------+
#-----使用方法一:實現通過密鑰文件完成身份驗證(不需要輸入密碼)-----
[root@www ~]# scp .ssh/id_rsa.pub [email protected]:/root/ #使用spc命令復制公鑰文件到遠程
#主機的用戶家目錄下的.ss/路徑下;
[email protected]'s password: #輸入登錄遠程主機的密碼;
id_rsa.pub 100% 397 0.4KB/s 00:00 #提示復製成功;
[root@mailCentOS6 ~]# ls .ssh/ #驗證確認文件復製成功;
id_rsa.pub known_hosts
[root@mailCentOS6 ~]# touch .ssh/authorized_keys #路徑內沒有自動驗證密鑰文件,創建一個;
[root@mailCentOS6 ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys #把公鑰追加到自動驗證密鑰文件;
[root@www ~]# ssh 192.168.0.110
Last login: Mon May 11 20:45:10 2015 from 192.168.0.111
[root@mailCentOS6 ~]# #OK了,看到了沒有,不用輸入密碼我們就直接可以遠程登錄了!!
#-----使用方法二:實現通過密鑰文件完成身份驗證(不需要輸入密碼)-----
[root@mailCentOS6 ~]# rm -f .ssh/authorized_keys #刪除原有保存的自動驗證密鑰文件;
[root@www ~]# ssh--id -i .ssh/id_rsa.pub [email protected] #使用命令自動傳輸生成自動驗證密鑰文件;
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys #提示生成的文件;
to make sure we haven't added extra keys that you weren't expecting.
[root@www ~]# ssh 192.168.0.110 #驗證看看是否可以登錄;
Last login: Mon May 11 21:02:29 2015 from 192.168.0.111
[root@mailCentOS6 ~]# ls .ssh/ #看到了沒有,我們現在已經登錄到了mailCentOS6這台主機上了;
authorized_keys known_hosts
【命令補充】
scp: 利用ssh協議在主機之間實現安全文件傳輸的工具
scp SRC1... DEST
分兩種情形:
1、源文件在本機,目標為遠程主機
# scp /path/to/somefile... USERNAME@HOST:/path/to/somewhere
源可以是目錄或文件有多個,目標必須是目錄
2、源文件在遠程,本地為目標
# scp USERNAME@HOST:/path/to/somewhere /path/to/somewhere
-r: 復制目錄時使用(實現遞歸復制),scp默認不能復制目錄;
-p: 保持源文件的元數據信息,包括mode和timestamp
-q: 靜默模式,復制過程不顯示狀態信息;
-p PORT: 指定ssh協議監聽的埠(遠程主機)。
『肆』 linux的哪些埠被佔用怎樣查看
linux在怎麼查看哪些埠被佔用?我們一起來了解一下吧。
1、打開linux系統,在linux的桌面的空白處右擊。
2、在彈出的下拉選項里,點皮灶擊打開終端。
3、終端輸入氏廳命令:netstat-anp,查找所有埠號。
4、輸入命令運行後,當埠後方出現LISTEN時表示埠被佔用。殲握隱
『伍』 Linux怎麼使用ss命令查看系統的socket狀態
ss是Socket Statistics的縮寫。顧名思義,ss命令可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。但ss的優勢在於它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。當伺服器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。可能你不會有切身的感受,但請相信我,當伺服器維持的連接達到上萬個的時候,使用netstat等於浪費 生命,而用ss才是節省時間。天下武功唯快不破。ss快的秘訣在於,它利用到了TCP協議棧中tcp_diag。tcp_diag是一個用於分析統計的模塊,可以獲得Linux 內核中第一手的信息,這就確保了ss的快捷高效。當然,如果你的系統中沒有tcp_diag,ss也可以正常運行,只是效率會變得稍慢。(但仍然比 netstat要快。)
命令格式:
ss [參數]
ss [參數] [過濾]
2.命令功能:
ss(Socket Statistics的縮寫)命令可以用來獲取 socket統計信息,此命令輸出的結果類似於 netstat輸出的內容,但它能顯示更多更詳細的 TCP連接狀態的信息,且比 netstat 更快速高效。它使用了 TCP協議棧中 tcp_diag(是一個用於分析統計的模塊),能直接從獲得第一手內核信息,這就使得 ss命令快捷高效。在沒有 tcp_diag,ss也可以正常運行。
3.命令參數:
-h, --help 幫助信息
-V, --version 程序版本信息
-n, --numeric 不解析服務名稱
-r, --resolve 解析主機名
-a, --all 顯示所有套接字(sockets)
-l, --listening 顯示監聽狀態的套接字(sockets)
-o, --options 顯示計時器信息
-e, --extended 顯示詳細的套接字(sockets)信息
-m, --memory 顯示套接字(socket)的內存使用情況
-p, --processes 顯示使用套接字(socket)的進程
-i, --info 顯示 TCP內部信息
-s, --summary 顯示套接字(socket)使用概況
-4, --ipv4 僅顯示IPv4的套接字(sockets)
-6, --ipv6 僅顯示IPv6的套接字(sockets)
-0, --packet 顯示 PACKET 套接字(socket)
-t, --tcp 僅顯示 TCP套接字(sockets)
-u, --udp 僅顯示 UCP套接字(sockets)
-d, --dccp 僅顯示 DCCP套接字(sockets)
-w, --raw 僅顯示 RAW套接字(sockets)
-x, --unix 僅顯示 Unix套接字(sockets)
-f, --family=FAMILY 顯示 FAMILY類型的套接字(sockets),FAMILY可選,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE 將原始TCP套接字(sockets)信息轉儲到文件
-F, --filter=FILE 從文件中都去過濾器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
4.使用實例:
實例1:顯示TCP連接
命令:ss -t -a
輸出:
代碼如下:
[root@localhost ~]# ss -t -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 0 127.0.0.1:smux *:*
LISTEN 0 0 *:3690 *:*
LISTEN 0 0 *:ssh *:*
ESTAB 0 0 192.168.120.204:ssh 10.2.0.68:49368
[root@localhost ~]#
實例2:顯示 Sockets 摘要
命令:ss -s
輸出:
代碼如下:
[root@localhost ~]# ss -s
Total: 34 (kernel 48)
TCP: 4 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 3《/p》 《p》Transport Total IP IPv6
* 48 - -
RAW 0 0 0
UDP 5 5 0
TCP 4 4 0
INET 9 9 0
FRAG 0 0 0
[root@localhost ~]#
說明:列出當前的established, closed, orphaned and waiting TCP sockets
實例3:列出所有打開的網路連接埠
命令:ss -l
輸出:
代碼如下:
[root@localhost ~]# ss -l
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 127.0.0.1:smux *:*
0 0 *:3690 *:*
0 0 *:ssh *:*
[root@localhost ~]#
實例4:查看進程使用的socket
命令:ss -pl
輸出:
代碼如下:
[root@localhost ~]# ss -pl
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 127.0.0.1:smux *:* users:((「snmpd」,2716,8))
0 0 *:3690 *:* users:((「svnserve」,3590,3))
0 0 *:ssh *:* users:((「sshd」,2735,3))
[root@localhost ~]#
實例5:找出打開套接字/埠應用程序
命令:ss -lp | grep 3306
輸出:
代碼如下:
[root@localhost ~]# ss -lp|grep 1935
0 0 *:1935 *:* users:((「fmsedge」,2913,18))
0 0 127.0.0.1:19350 *:* users:((「fmsedge」,2913,17))
[root@localhost ~]# ss -lp|grep 3306
0 0 *:3306 *:* users:((「mysqld」,2871,10))
[root@localhost ~]#
實例6:顯示所有UDP Sockets
命令:ss -u -a
輸出:
代碼如下:
[root@localhost ~]# ss -u -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:syslog *:*
UNCONN 0 0 *:snmp *:*
ESTAB 0 0 192.168.120.203:39641 10.58.119.119:domain
[root@localhost ~]#
實例7:顯示所有狀態為established的SMTP連接
命令:ss -o state established 『( dport = :smtp or sport = :smtp )』
輸出:
代碼如下:
[root@localhost ~]# ss -o state established 『( dport = :smtp or sport = :smtp )』
Recv-Q Send-Q Local Address:Port Peer Address:Port
[root@localhost ~]#
實例8:顯示所有狀態為Established的HTTP連接
命令:ss -o state established 『( dport = :http or sport = :http )』
輸出:
代碼如下:
[root@localhost ~]# ss -o state established 『( dport = :http or sport = :http )』
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 75.126.153.214:2164 192.168.10.42:http
[root@localhost ~]#
實例9:列舉出處於 FIN-WAIT-1狀態的源埠為 80或者 443,目標網路為 193.233.7/24所有 tcp套接字
命令:ss -o state fin-wait-1 『( sport = :http or sport = :https )』 dst 193.233.7/24
實例10:用TCP 狀態過濾Sockets:
命令:
代碼如下:
ss -4 state FILTER-NAME-HERE
ss -6 state FILTER-NAME-HERE
輸出:
代碼如下:
[root@localhost ~]#ss -4 state closing
Recv-Q Send-Q Local Address:Port Peer Address:Port
1 11094 75.126.153.214:http 192.168.10.42:4669
說明:
FILTER-NAME-HERE 可以代表以下任何一個:
代碼如下:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : 所有以上狀態
connected : 除了listen and closed的所有狀態
synchronized :所有已連接的狀態除了syn-sent
bucket : 顯示狀態為maintained as minisockets,如:time-wait和syn-recv.
big : 和bucket相反。
實例11:匹配遠程地址和埠號
命令:
代碼如下:
ss dst ADDRESS_PATTERN
ss dst 192.168.1.5
ss dst 192.168.119.113:http
ss dst 192.168.119.113:smtp
ss dst 192.168.119.113:443
輸出:
代碼如下:
[root@localhost ~]# ss dst 192.168.119.113
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:20229
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:61056
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:61623
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:60924
ESTAB 0 0 192.168.119.103:16050 192.168.119.113:43701
ESTAB 0 0 192.168.119.103:16073 192.168.119.113:32930
ESTAB 0 0 192.168.119.103:16073 192.168.119.113:49318
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:3844
[root@localhost ~]# ss dst 192.168.119.113:http
State Recv-Q Send-Q Local Address:Port Peer Address:Port
[root@localhost ~]# ss dst 192.168.119.113:3844
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:3844
[root@localhost ~]#
實例12:匹配本地地址和埠號
命令:
代碼如下:
ss src ADDRESS_PATTERN
ss src 192.168.119.103
ss src 192.168.119.103:http
ss src 192.168.119.103:80
ss src 192.168.119.103:smtp
ss src 192.168.119.103:25
輸出:
代碼如下:
[root@localhost ~]# ss src 192.168.119.103:16021
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:63054
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:62894
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:63055
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:2274
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:44784
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:7233
ESTAB 0 0 192.168.119.103:16021 192.168.119.103:58660
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:44822
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56737
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:57487
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56736
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:64652
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56586
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:64653
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56587
[root@localhost ~]#
實例13:將本地或者遠程埠和一個數比較
命令:
代碼如下:
ss dport OP PORT
ss sport OP PORT
輸出:
代碼如下:
[root@localhost ~]# ss sport = :http
[root@localhost ~]# ss dport = :http
[root@localhost ~]# ss dport \》 :1024
[root@localhost ~]# ss sport \》 :1024
[root@localhost ~]# ss sport \《 :32000
[root@localhost ~]# ss sport eq :22
[root@localhost ~]# ss dport != :22
[root@localhost ~]# ss state connected sport = :http
[root@localhost ~]# ss \( sport = :http or sport = :https \)
[root@localhost ~]# ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
說明:
ss dport OP PORT 遠程埠和一個數比較;ss sport OP PORT 本地埠和一個數比較。
OP 可以代表以下任意一個:
《= or le : 小於或等於埠號
》= or ge : 大於或等於埠號
== or eq : 等於埠號
!= or ne : 不等於埠號
《 or gt : 小於埠號
》 or lt : 大於埠號
實例14:ss 和 netstat 效率對比
命令:
代碼如下:
time netstat -at
time ss
輸出:
代碼如下:
[root@localhost ~]# time ss
real 0m0.739s
user 0m0.019s
sys 0m0.013s
[root@localhost ~]#
[root@localhost ~]# time netstat -at
real 2m45.907s
user 0m0.063s
sys 0m0.067s
[root@localhost ~]#
說明:
用time 命令分別獲取通過netstat和ss命令獲取程序和概要佔用資源所使用的時間。在伺服器連接數比較多的時候,netstat的效率完全沒法和ss比。
『陸』 Linux怎麼使用ss命令查看系統的socket狀態
Linux系統中,ss命令可用於查看系統的socket的狀態。
1、命令格式:
ss [參數]
ss [參數] [過濾]
2、命令功能:
ss(Socket Statistics的縮寫)命令可以用來獲取 socket統計信息,此命令輸出的結果類似於
netstat輸出的內容,但它能顯示更多更詳細的 TCP連接狀態的信息,且比 netstat 更快速高效。它使用了 TCP協議棧中
tcp_diag(是一個用於分析統計的模塊),能直接從獲得第一手內核信息,這就使得 ss命令快捷高效。在沒有
tcp_diag,ss也可以正常運行。
3、命令參數:
-h, --help 幫助信息
-V, --version 程序版本信息
-n, --numeric 不解析服務名稱
-r, --resolve 解析主機名
-a, --all 顯示所有套接字(sockets)
-l, --listening 顯示監聽狀態的套接字(sockets)
-o, --options 顯示計時器信息
-e, --extended 顯示詳細的套接字(sockets)信息
-m, --memory 顯示套接字(socket)的內存使用情況
-p, --processes 顯示使用套接字(socket)的進程
-i, --info 顯示 TCP內部信息
-s, --summary 顯示套接字(socket)使用概況
-4, --ipv4 僅顯示IPv4的套接字(sockets)
-6, --ipv6 僅顯示IPv6的套接字(sockets)
-0, --packet 顯示 PACKET 套接字(socket)
-t, --tcp 僅顯示 TCP套接字(sockets)
-u, --udp 僅顯示 UCP套接字(sockets)
-d, --dccp 僅顯示 DCCP套接字(sockets)
-w, --raw 僅顯示 RAW套接字(sockets)
-x, --unix 僅顯示 Unix套接字(sockets)
-f, --family=FAMILY 顯示 FAMILY類型的套接字(sockets),FAMILY可選,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE 將原始TCP套接字(sockets)信息轉儲到文件
-F, --filter=FILE 從文件中都去過濾器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
4、使用實例:
『柒』 Linux裡面ss -ntl命令作用是什麼
ss 是 Socket Statistics 的縮寫。ss 命令可以用來獲取 socket 統計信息,它顯示的內容和 netstat 類似。但 ss 的優勢在於它能夠顯示更多更詳細的有關 TCP 和連接狀態的信息,而且比 netstat 更快。當伺服器的 socket 連接數量變得非常大時,無論是使用 netstat 命令還是直接 cat /proc/net/tcp,執行速度都會很慢。ss 命令利用到了 TCP 協議棧中 tcp_diag。tcp_diag 是一個用於分析統計的模塊,可以獲得 Linux 內核中第一手的信息,因此 ss 命令的性能會好很多。《Linux就該這么學》有Linux命令大全
常用選項
-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 解釋為域名,把埠號解釋為協議名稱
常見用例
如果不添加選項 ss 命令默認輸出所有建立的連接(不包含監聽的埠),包括 tcp, udp, and unix socket 三種類型的連接:
查看主機監聽的埠 $ ss -tnl
蠻少看見用-ntl參數的。
『捌』 linux 如何查看ss組下有哪些成員。
首先查看ss組下用命令:
grep 'ss' /etc/group
顯示結果是:ss:x:組ID號
然後用cat /etc/passwd查看一下這個文件,發現第四列是gid(兩列之間用「:」分開)。接下來,輸入:
awk -F":" '{print $1"\t\t"$4}' /etc/passwd | grep '組ss顯示的ID號'
「:」表示用":"作為分隔符(/etc/passwd中用":"作為分隔符的);print 列印;$1和$4分別表示第一列和第四列,及用戶名和組號; \t表示製表符;grep '組ssID號'表示將含有的行取出。
這樣,就能將一個組ss內的所有用戶顯示出來了。
etc/group 文件是用戶組的配置文件。
/etc/passwd 文件是用戶的配置文件。
etc/group 內容具體分析:
/etc/group 的內容包括用戶組(Group)、用戶組口令、GID及該用戶組所包含的用戶(User),每個用戶組一條記錄;格式如下:
group_name:passwd:GID:user_list
在/etc/group 中的每條記錄分四個欄位:
第一欄位:用戶組名稱;
第二欄位:用戶組密碼;
第三欄位:GID
第四欄位:用戶列表,每個用戶之間用,號分割;本欄位可以為空;如果欄位為空表示用戶組為GID的用戶名;
使用cat、more、less、head、tail以及vim等命令都可以查看、修改這兩個配置文件
『玖』 linux 進程中Ss 是什麼意思
大S: 表示休眠狀態
小s: 表示此為父進程, 它還有子進程
Ss就是兩個在一起表示了