SSH链接原理及ssh-key讲解

第1章 SSH服务介绍说明

1.1 SSH服务介绍

SSH22端口)是Secure Shell Protocol的简写IETF网络工做小组(Network Working Group)制定;在进行数据传输以前,SSH先对联机数据包经过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全linux

SSH是专为远程登陆会话和其余网络服务提供的安全性协议。利用SSH协议能够有效的防止远程管理过程当中的信息泄露问题,在当前的生产环境运维工做中,绝大多数企业普通采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet23端口,非加密的)等。面试

telnet23端口)实现远程控制管理,可是不对数据进行加密算法

1.2 SSH服务主要提供的服务功能

在默认状态下,SSH服务主要提供两个服务功能:shell

1一个是提供相似telnet远程联机服务器的服务,即上面提到的SSH服务;vim

2另外一个是相似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务(vsftp.proftpwindows

 特别提醒:安全

 SSH客户端(ssh命令)还包含一个颇有用的远程安全拷贝命令scp,也是经过ssh协议工做的。bash

1.3 ssh服务排错说明

1.3.1 ssh服务链接排错过程

image.png 

1.3.2 测试ssh服务是否开启

方法1telnet 10.0.0.41 22服务器

说明:正确标准的方式退出telnet链接,按ctrl+]键,切换到telnet命令行,输入quit命令进行退出网络

方法2: ss -lntup |grep 22

[root@m01 ~]# ss -lntup |grep 22

tcp    LISTEN     0      128             :::22               :::*      users:(("sshd",1188,4))

tcp    LISTEN     0      128             *:22               *:*      users:(("sshd",1188,3))

方法3netstat -lntup

方法4nmap -p 22 10.0.0.41

方法5nc 10.0.0.41 22

1.3.3 一个服务启动始终没法启动起来

(1)查看日志

(2)检查服务端口有没有冲突,若是冲突则从新指定一个端口  例:rsync --daemon --port=874

[root@backup ~]# killall rsync

rsync: no process killed

[root@backup ~]# rsync --daemon --port=874

[root@backup ~]# netstat -lntup |grep rsync

tcp        0      0 0.0.0.0:874                 0.0.0.0:*                 LISTEN      1758/rsync          

tcp        0      0 :::874                      :::*                     LISTEN      1758/rsync          

第2章 远程管理服务

2.1 SSH远程登陆主机

image.png 

2.2 telnet服务部署过程(默认telnet远程管理服务不支持root用户登陆)

2.2.1 第一个里程碑:安装telnet服务软件

yum install -y telnet telnet-server

2.2.2 第二个里程碑:配置telnet服务能够被xinetd服务管理

vim /etc/xinetd.d/telnet

   修改    disable         = no

[root@m01 ~]# vim /etc/xinetd.d/telnet

# default: on

# description: The telnet server serves telnet sessions; it uses \

#       unencrypted username/password pairs for authentication.

service telnet

{

        flags           = REUSE

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/sbin/in.telnetd

        log_on_failure  += USERID

        disable         = no                 --------表示telnet愿意被xinetd管理

}

2.2.3 第三个里程碑:启动xinetd服务

/etc/init.d/xinetd start

[root@m01 ~]# /etc/init.d/xinetd start

Starting xinetd:                                           [  OK  ]

[root@m01 ~]# netstat -lntup |grep 23

tcp        0      0 :::23                       :::*                    LISTEN      1708/xinetd 

这时候服务名不叫telnet了,叫xineted

[root@m01 ~]# telnet 10.0.0.41

Trying 10.0.0.41...

Connected to 10.0.0.61.

Escape character is '^]'.

CentOS release 6.9 (Final)

Kernel 2.6.32-696.el6.x86_64 on an x86_64

backup login: wuhuang

Password:  

利用wireshark软件进行抓包

1. 实现确认ssh远程协议进行数据的加密,telnet远程协议未对数据进行加密处理

2. 实现观察tcp三次握手过程和四次挥手过程

2.3 SSH远程链接服务与telnet服务区别

1telnet是不安全的远程链接,链接内容是明文的; ssh是加密的远程链接,链接内容是加密的。

2SSH服务默认支持root用户登陆,telnet服务默认不支持root用户登陆

2.4 tcpdump抓包命令

tcpdump -i eth0 -nn -c 5 "port 53"

-i             ------指定抓取哪个网卡上产生数据包流量

--nn        ------抓取数据包中端口信息以数字方式显示

-c            -----表示抓取的数据包数量

"port 53"  ----- 双引号里面表示搜索数据包的条件

-w             -----将抓取数据保存到指定文件中

-r              -----对保存的数据包文件进行读取

[root@m01 ~]# tcpdump -i eth0 -nn -c 8 "port 22"

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

10:32:52.885672 IP 10.0.0.61.22 > 10.0.0.1.51651: Flags [P.], seq 1975289928:1975290136, ack 3602557944, win 634, length 208

10:32:52.887370 IP 10.0.0.1.51651 > 10.0.0.61.22: Flags [P.], seq 1:65, ack 208, win 256, length 64

10:32:52.891085 IP 10.0.0.61.22 > 10.0.0.1.51651: Flags [P.], seq 208:496, ack 65, win 634, length 288

10:32:52.893261 IP 10.0.0.61.22 > 10.0.0.1.51651: Flags [P.], seq 496:656, ack 65, win 634, length 160

10:32:52.893484 IP 10.0.0.1.51651 > 10.0.0.61.22: Flags [.], ack 656, win 254, length 0

2.5 SSH知识要点总结

SSH是安全的加密协议,用于远程链接linux服务器。

SSH默认端口是22,安全协议版本SSHv2,除了2以外还有SSHv1(有漏洞)。

SSH服务端主要包含两个服务功能SSH远程链接和SFTP服务。

Linux SSH客户端包含ssh远程链接命令,以及远程拷贝scp命令等。

第3章 SSH服务详解

SSH服务由服务端软件OpenSSHopenssl)和客户端(常见的有SSH),SecureCRTPuttyxshell组成,SSH服务默认使用22端口提供服务,它有两个不兼容的SSH协议版本,分别是1.x2.x

3.1 linux系统中主要的两个数据加密软件(大礼包)

3.1.1 openssh

[root@m01 ~]# rpm -qf `which ssh`

openssh-clients-5.3p1-122.el6.x86_64

[root@m01 ~]# rpm -ql openssh-clients

/etc/ssh/ssh_config            -----SSH客户端配置文件

/usr/bin/.ssh.hmac             

/usr/bin/scp                  -----远程复制命令

/usr/bin/sftp                  ----远程文件传输服务-

/usr/bin/slogin                ----远程登陆命令

/usr/bin/ssh                  ----实时远程登陆管理主机命令

/usr/bin/ssh-add

/usr/bin/ssh-agent

/usr/bin/ssh-copy-id           ----ssh服务分发公钥命令

/usr/bin/ssh-keyscan

实例:

[root@m01 ~]# slogin 10.0.0.61

The authenticity of host '10.0.0.61 (10.0.0.61)' can't be established.

RSA key fingerprint is 57:3f:64:68:95:4d:99:54:01:33:ab:47:a0:72:da:bf.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '10.0.0.61' (RSA) to the list of known hosts.

root@10.0.0.61's password:

Last login: Mon Jan 29 08:38:05 2018 from 10.0.0.1

[root@m01 ~]#

 openssh-clients总结(客户端)

/etc/ssh/ssh_config       --- ssh客户端配置文件

    /usr/bin/.ssh.hmac       --- ssh服务的算法文件

    /usr/bin/scp             --- 基于ssh协议,实现远程拷贝数据命令

    /usr/bin/sftp            --- 基于ssh协议,实现数据传输密命令

    /usr/bin/slogin          --- 远程登陆主机链接命令    

    /usr/bin/ssh             --- 远程登陆主机链接命令

    /usr/bin/ssh-add  --- 此参数必须和ssh-agent命令结合使用,将秘钥信息注册到ssh-agent代理服务中

    /usr/bin/ssh-agent       --- 启动ssh认证代理服务命令

    /usr/bin/ssh-copy-id     --- 远程分发公钥命令(ok

/usr/bin/ssh-keyscan     --- 显示本地主机上默认的ssh公钥信息(ok

[root@m01 ~]# rpm -ql openssh-server

/etc/pam.d/ssh-keycat

/etc/pam.d/sshd

/etc/rc.d/init.d/sshd                -----ssh服务启动脚本文件

/etc/ssh/sshd_config               ----ssh服务配置文件

/etc/sysconfig/sshd

/usr/libexec/openssh/sftp-server

/usr/libexec/openssh/ssh-keycat

/usr/sbin/.sshd.hmac

/usr/sbin/sshd                    -----ssh服务进程启动命令

[root@m01 ~]# ps -ef |grep sshd

root       1188      1  0 08:36 ?        00:00:00 /usr/sbin/sshd

root       1226   1188  0 08:38 ?        00:00:01 sshd: root@pts/0

root       2378   1228  0 18:26 pts/0    00:00:00 grep sshd

[root@m01 ~]# /etc/init.d/sshd stop

Stopping sshd:                                             [  OK  ]

[root@m01 ~]# ps -ef |grep sshd

root       1226      1  0 08:38 ?        00:00:01 sshd: root@pts/0

root       2396   1228  0 18:27 pts/0    00:00:00 grep sshd

[root@m01 ~]# /usr/sbin/sshd

[root@m01 ~]# ps -ef |grep sshd

root       1226      1  0 08:38 ?        00:00:01 sshd: root@pts/0

root       2398      1  0 18:28 ?        00:00:00 /usr/sbin/sshd

root       2400   1228  0 18:28 pts/0    00:00:00 grep sshd

 

  openssh-server总结(服务端):

/etc/rc.d/init.d/sshd      --- ssh服务端启动脚本命令

   /etc/ssh/sshd_config      --- ssh服务端配置文件

   /usr/sbin/sshd           --- 启动ssh服务进程命令   

  扩展说明:sshd服务主要的两个进程

   /usr/sbin/sshd         --- 此进程对客户端第一次链接ssh服务端有影响

   sshd: root@pts/0       --- 一旦ssh链接成功,是否能够始终保持链接有次进程决定

代理服务中

/usr/bin/ssh-agent            --- 启动ssh认证代理服务命令

/usr/bin/ssh-copy-id          --- 远程分发公钥命令

/usr/bin/ssh-keyscan          --- 显示本地主机上默认的ssh公钥信息

3.1.2 openssl:(https

OpenSSH同时支持SSH1.x2.x。用SSH 2.x的客户端程序不能链接到SSH 1.x的服务程序上。

SSH服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的链接请求。SSH服务端的进程名为sshd,负责实时监听远程SSH客户端的远程链接请求,并进行处理,通常包括公共密钥认证,密钥交换,对称密钥加密和非安全链接等。这个SSH服务就是咱们前面基础系统优化中保留开机自启动的服务之一。

ssh客户端包含ssh以及像scp(远程拷贝),slogin(远程登陆),sftp(安全FTP文件传输)等应用程序。

ssh的工做机制大体是本地的ssh客户端先发送一个链接请求到远程的ssh服务端,服务端检查链接的客户端发送的数据包和IP地址,若是确认合法,就会发送密钥发回给服务端,自此链接创建。

3.2 ssh协议实现加密技术原理

3.2.1  公钥和私钥

1)利用了公钥和私钥实现数据加密和解密(公钥:锁头  私钥:钥匙)

2)利用公钥和私钥实现了认证机制,公钥能够在网络中传输,私钥在本地主机保存

ssh_host_dsa_key

ssh_host_dsa_key.pub   

ssh_host_rsa_key

ssh_host_rsa_key.pub

 

[root@m01 ~]# ssh-keyscan 172.16.1.61

# 172.16.1.61 SSH-2.0-OpenSSH_5.3

172.16.1.61 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA9a1gvu8SLfmLdbARr3jhPAl5pofirPmgulYLl2af6xp2W0wevd3+cxmtFUDCLWFWx2u6iifNSvZ1NgQ/cyZn0A3BMfVLReb6kIttPIsJ1N8YMB7mB3kfpu8zo1a94g6imzrMhk/rcerWoRJ7fHumKAheIQ8d3K9kn6iLNbAIpHWY83ndE2ArsDOBEZaYtlQIwCs1k54kA/luxSkjZkuQzWvd+CDIbIyP+Ha/DPVrKl+LH15CZ7iBhSj4eoPxDEQLUPuaQ4IrCM3U+ts8PYw6+8DYCHUoeYxuw4OamstkS669bb197Pzfh8TJewpzHrxBPCxDrhwU+Q/11BA8Q0TCFQ==

 

[root@m01 ~]# ssh-keyscan -t dsa 172.16.1.61   根据IP查看对应主机的公钥

# 172.16.1.61 SSH-2.0-OpenSSH_5.3

172.16.1.61 ssh-dss AAAAB3NzaC1kc3MAAACBAKSV66UzxqEzt8TKEFcyQtYPMC3y7YeZh7YVsy+E4KaMQAEVzOwcp2b6IXFyMDGNrystP9jfV7cXKC+2S7LkayJnOr8l3NgmzY3eXQs3EqkhgsN7qqv+/NCrDJ3oNChYGCCnq5OdRbHGfXijPYfF41i4xDJaSx8oTLx1rvpxYievAAAAFQCl9Ri/GrPTxMQ0KMefCV2kW0oIdwAAAIA7dvGR8RWPeoTG/xqU5p5ARWZFYMXEf/B7dvYTXg/ULN640LDh20iGVjxK5L4TwIuaJHt5c5LbOZpNuO2+zeMDjaEcwQpEUAQEev/xToPR8DTnVK6rGX65S4+0LwEd+J9A5+khOdKVfTHE+g+pE2Xq9o902SHQ91KXQT2kBJl4yQAAAIBc0DmG6tQCnKrxyiTR4GWCNzhq3P/9nzkendAyPce91uEVyvNa5LtI1xP0db/Ez2ldCpnpC6LWWvUNXqSKu4X8Mol24ATTgEilGFQ8FjpcG8WyzjQarazr5a5cwf/bDagvkD6sUiba/+kolUeD2s2tq9CkVaJEOkrSJaNVFJap4Q==

说明:-t        ----指定加密类型(默认为rsa

3私钥和公钥的存储位置

[root@m01 ~]#  ls /etc/ssh

moduli      sshd_config      ssh_host_dsa_key      ssh_host_key      ssh_host_rsa_key

ssh_config  sshd_config.bak  ssh_host_dsa_key.pub  ssh_host_key.pub  ssh_host_rsa_key.pub

说明:

1.ssh_host_key就是私钥(里面都是乱码)

2.后面带.pub的文件就是公钥(如:ssh_hosts_pub

 

3.2.2 sshv1sshv2版本比较

v1版本钥匙和锁头默认不会变化,数据传输不安全

v2版本钥匙和锁头会常常变化,数据传输更安全

 

3.2.3 ssh加密算法v2.x

SSH 1.x的联机过程当中,当Server接受Client端的Private Key后,就再也不针对该次联机的Key pair进行检验。此时如有恶意***针对该联机的Key pair对插入恶意的程序代码时,因为服务端你不会再检验联机的正确性,所以可能会接收该程序代码,从而形成系统被黑掉的问题。

为了改正这个缺点,SSH version 2 多加了一个确认联机正确性的Diffie-Hellman机制,在每次数据传输中,Server都会以该机制检查数据的来源是否正确,这样,能够避免联机过程当中被插入恶意程序代码的问题。也就是说,SSH version 2 是比较安全的。

因为SSH1协议自己存在较大安全问题,所以,建议你们尽可能都用SSH2的联机模式。而联机版本的设置则须要在SSH主机端与客户端均设置好才行。

3.3 SSH服务认证类型

3.3.1 基于密码的认证

基于口令的安全验证的方式就是你们如今一直在用的,只要知道服务器的SSH链接帐号和口令(固然也要知道对应服务器的IP及开放的SSH端口,默认为22),就能够经过ssh客户端登陆到这台远程主机。此时,联机过程当中全部传输的数据都是加密的。

[root@m01 ~]# ssh -p22 root@10.0.0.7

root@10.0.0.7's password:

Last login: Mon Jan 29 08:38:11 2018 from 10.0.0.1

3.3.2 基于秘钥的认证(实现免密码管理)

基于密钥的安全验证方式是指,须要依靠密钥,也就是必须事先创建一对密钥对,而后把公用密钥(Public key)放在须要访问的目标服务器上,另外,还须要把私有密钥(Private key)放到SSH的客户端或对应的客户端服务器上。

   私钥不能在网络中传输-----私钥能够解密公钥

   公钥能够在网络中传输-----公钥不能解密私钥

此时,若是要想链接到这个带有公用密钥的SSH服务器,客户端SSH软件或客户端服务器就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求以后,会先在该SSH服务器上链接的用户的家目录下寻找事先放上去的对应用户的公用密钥,而后把它和链接的SSH客户端发送过来的公用密钥进行比较。若是两个密钥一致,SSH服务器就用公用密钥加密质询并把它发送给SSH客户端。

SSH客户端收到质询以后就能够用本身的私钥解密,再把它发送给SSH服务器。使用这种方式,须要知道联机用户的密钥文件。与第一种基于口令验证的方式相比,第二种方式不须要在网络上传送口令密码,因此安全性更高了,这时咱们也要注意保护咱们的密钥文件,特别是私钥文件,一旦被***获取,危险就很大了。

基于密钥的安全认证也有windows客户端和linux客户端的区别。在这里咱们主要介绍的是linux客户端和linux服务端之间的密钥认证。

image.png 

总结:

. 在管理端建立出秘钥对(建立两个信物)

. 管理端将公钥(锁头)传输给被管理端,锁头传输给被管理端要基于密码方式认证

. 管理端向被管理端发出创建链接请求

. 被管理端发出公钥质询

. 管理端利用私钥解密公钥,进行公钥质询响应

. 被管理端接收到质询响应,确认基于秘钥认证成功

3.4 基于秘钥认证配置部署过程

3.4.1 第一个里程碑:管理服务器上建立秘钥对

ssh-keygen -t rsa

[root@m01 ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):               ---确认私钥保存路径(默认路径)

Created directory '/root/.ssh'.

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:

37:a5:23:85:89:5f:62:93:40:d6:9c:3d:04:d0:07:a8 root@m01

The key's randomart image is:

+--[ RSA 2048]----+

|     .=*o*.      |

|     ..o=++      |

|     .. B.o..    |

|    E  o = o     |

|        S =      |

|         o o     |

|                 |

|                 |

|                 |

+-----------------+

命令说明:

1)建立密钥对时,要你输入的密码,为进行密钥对验证时输入的密码(和linux角色登陆的密码彻底没有关系);

2)若是咱们要进行的是SSH免密码链接,那么这里密码为空跳过便可。

3)若是在这里你输入了密码,那么进行SSH密钥对匹配链接的时候,就须要输入这个密码了。(此密码为独立密码)

4)用户家目录下的.ssh隐藏目录下会生成:id_rsa id_rsa.pub 两个文件。id_rsa是用户的私钥;id_rsa.pub则是公钥

 建立完后,会在当前用户的宿主目录.ssh/下生成一个公钥与私钥

[root@m01 ~]#  ls .ssh/

id_rsa  id_rsa.pub

 

3.4.2 第二个里程碑:分发公钥给被管理端主机

ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.31

[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.31

The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.

RSA key fingerprint is 57:3f:64:68:95:4d:99:54:01:33:ab:47:a0:72:da:bf.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '172.16.1.31' (RSA) to the list of known hosts.

root@172.16.1.31's password: 输入密码

Now try logging into the machine, with "ssh 'root@172.16.1.31'", and check in:

 

  .ssh/authorized_keys

 

to make sure we haven't added extra keys that you weren't expecting.

命令说明:

-i   ---指定要进行分发的公钥文件

root表示客户端以什么样的身份登陆到服务端

若是ssh端口不是默认的22端口,须要在公钥文件后面加参数:-p 3600

3.4.3 第三个里程碑:利于基于秘钥方式登陆测试

[root@m01 ~]# ssh 172.16.1.31      能够直接免密登陆

Last login: Mon Jan 29 08:37:44 2018 from 10.0.0.1

[root@nfs01 ~]# exit

3.5 实现多台主机之间基于秘钥的彼此相互访问

3.5.1 第一个里程碑:启动认证代理服务

[root@m01 ~]# eval `ssh-agent -s`

Agent pid 2602

说明:

eval这个命令,至关于执行俩次bash

3.5.2 第二个里程碑:向agent代理服务器注册本地服务器私钥信息

[root@m01 ~]# ssh-add

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

3.5.3 第三个里程碑:将注册凭证信息经过远程登陆方式给被管理主机

[root@m01 ~]# ssh -A 172.16.1.31

Last login: Wed Jan 31 17:51:07 2018 from 172.16.1.61

[root@nfs01 ~]#

注意:

1.注册凭证不是私钥信息

2.被管理主机接受到后,会产生凭证信息/tmp/ssh-xxx/agent.12334

image.png 

3.6 ssh服务配置文件说明

修改SSH服务的运行参数,是经过修改配置文件/etc/ssh/sshd.config文件来实现的。
通常来讲SSH服务使用默认的配置已经可以很好的工做了,若是对安全要求不高,仅仅提供SSH服务的状况,能够不须要修改任何配置。

[root@m01 ~]# vim /etc/ssh/sshd_config

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

 

13 #Port 22                                     --- 表示修改默认端口号信息,ssh链接默认端口22 

15 #ListenAddress 0.0.0.0                                      --- 指定监听本地主机网卡地址信息 

42 #PermitRootLogin yes            --- 是否容许root用户远程登陆,默认容许,建议禁止root远程登陆

65 #PermitEmptyPasswords no                                  --- 是否容许空密码

81 GSSAPIAuthentication yes      --- 默认此参数配置信息为yes,老是要对链接进行如下GSSAPI认证

122 UseDNS yes    --- 默认此参数配置信息为yes,要对访问过来主机信息作dns反向解析(建议设为no——服务端

说明:

1)#号表明注释,#号后面有空格的表示对数据内容的描述信息#号后面没空格的表示参数信息,注释的 参数信息是默认的参数配置

2)一旦修改了Port,那么ssh登陆时就须要-p指定端口号,否则会登陆失败,ssh默认登陆22端口

3)一旦修改了ListenAddress,监听地址,那么再也不地址范围内的全部客户端将没法远程链接服务器。

4) GSSAPIAuthentication yes  UseDNS yes   设为no能够提升链接速度

5)修改配置文件后,须要重启sshd服务才能生效

image.png 

第4章 SSH服务安全配置

4.1  SSH***案例说明

SSH***网友案例:http://phenixikki.blog.51cto.com/7572938/1546669

4.1.1 如何防止SSH登陆***小结:

    1、用密钥登陆,不用密码登录。

    2、牤牛阵法:解决SSH安全问题

       a.防火墙封闭SSH,指定源IP限制(局域网、信任公网)

       b.开启SSH只监听本地内网IPListenAddress 172.16.1.61)。

    3、尽可能不给服务器外网IP

    4、最小化(软件安装-受权)

    5、给系统的重要文件或命令作一个指纹

    6. 给他锁上 chattr +i   +a

image.png 

第5章 企业面试题

5.1 给你一个端口,如何命令行查出对应的服务是什么?

ss -lntup |grep 22

netstat -lntup |grep 22

lsof -i:22

grep "\b22/\b" /etc/services   有点耍赖,不建议使用

nmap -p 22 10.0.0.41

nc 10.0.0.41 22

5.2 若是给你一个进程名(如:ssh),如何查看对应的端口是什么?

ss -lntup |grep sshd

netstat -lntup |grep sshd

5.3 取出sshd端口号22

netstat -lnptu |awk -F "[ :]+" '$4~/^22/{print $4}'

netstat -lnptu |awk -F "[ :]+" '!/:::/&& /sshd/{print $5}'

netstat -lnptu |awk -F "[ :]+" '/sshd/&& $5!="*"{print $5}'

netstat -lnptu |awk -F "[ :]+" '/sshd/{if ($5!="*")print $5}'

相关文章
相关标签/搜索