五、linux常用功能
五、linux常用功能
ssh
连接虚拟机
5.1、使用需要使用
su root
命令切换到root
用户才能进行下面操作
ssh
配置文件
1. 进入vi /etc/ssh/sshd_config
root
用户远程连接虚拟机
2. 允许将PermitRootLogin yes
配置打开(删掉PermitRootLogin yes
左边的#
)
PermitRootLogin yes

3. 允许使用密码连接虚拟机
将 PasswordAuthentication yes
配置打开(删掉PasswordAuthentication yes
左边的#
)
PasswordAuthentication yes

4. 重启ssh service
使用service sshd restart
命令
service sshd restart
或使用systemctl restart sshd
命令
systemctl restart sshd
5. 连接虚拟机
使用如下命令即可连接(修改为自己的虚拟机的ip)
5.2、修改网卡设置
使用ip addr
命令可以查看各个网卡的ip
ip addr

先使用cd /etc/sysconfig/network-scripts
命令进到网卡的配置目录,使用ll
命令查看相应网卡的配置文件
cd /etc/sysconfig/network-scripts

假如我想想要修改eth0
号网卡,可以使用如下命令修改该网卡的配置
如果我们想要修改
eth0
号网卡却没有对应的ifcfg-eth0
文件,如果我们安装了nano
可以使用sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
命令创建,如果没有安装nano
可以直接使用touch
命令创建ifcfg-eth0
文件
vi ifcfg-eth0
修改前:(该网卡是NAT
模式,PERSISTENT_DHCLIENT
是一个网络管理工具 dhclient
的配置选项,它指示 dhclient
在网络连接断开后是否保持运行。当 PERSISTENT_DHCLIENT
设置为 yes
时,dhclient
将在网络连接断开后继续运行,并尝试重新连接到网络。这对于需要保持网络连接的应用程序(如服务器)非常有用,因为它可以确保网络连接在断开后能够自动恢复。)
# 设备名称
DEVICE="eth0"
BOOTPROTO="dhcp"
# 是否开机自启动
ONBOOT="yes"
# 网络类型
TYPE="Ethernet"
PERSISTENT_DHCLIENT="yes"

修改后:
DEVICE="eth0"
BOOTPROTO="static"
IPADDR="192.168.56.100"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Ethernet"
PERSISTENT_DHCLIENT="yes"

如果是
Host-Only仅主机模式
,可以修改为如下格式DEVICE="eth1" BOOTPROTO="static" IPADDR="192.168.56.11" NETMASK="255.255.255.0" GATEWAY="192.168.56.1" DNS1="8.8.8.8" DNS2="8.8.4.4"
或:
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes NAME=eth1 DEVICE=eth1 ONBOOT=yes IPADDR=192.168.56.11 NETMASK=255.255.255.0 GATEWAY=192.168.56.1 DNS1=8.8.8.8 DNS2=8.8.4.4
systemctl restart network
命令可以重启网络服务,但是慎用它,因为它可能会导致网络连接中断,尤其是在远程连接的情况下。在某些情况下,使用该命令可能会导致一些网络配置文件丢失或者被覆盖,从而导致网络连接出现问题。如果您需要重启网络服务,建议使用以下命令:
systemctl restart network-manager
:重启 Network Manager 服务systemctl restart NetworkManager.service
:重启 Network Manager 服务service network restart
:重启网络服务这些命令都可以用来重启网络服务,但是它们更加稳定,不会导致网络连接中断或者配置文件丢失的问题。
重启网卡
systemctl restart network
输入这条命令后,我的ssh
连接工具就连不上了,在虚拟机的控制台输入ip addr
命令,可以看到已经修改成功了

然后cmd
使用如下命令即可连上虚拟机
5.3、防火墙设置
1. 开启防火墙
1. 查看防火状态
systemctl status firewalld
service iptables status
2. 打卡防火墙
如果防火墙状态不是active,需要打开防火墙
systemctl start firewalld
2. 暂时关闭防火墙
systemctl stop firewalld
service iptables stop
3. 永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4. 自启动防火墙
systemctl enable firewalld
service iptables restart
5. 重启防火墙
systemctl restart firewalld
2. 添加允许通过的端口
1. 查看所有已开放的临时端口(默认为空)
firewall-cmd --list-ports
查看所有永久开放的端口(默认为空)
firewall-cmd --list-ports --permanent
2. 添加临时开放端口
例如:比如我修改ssh远程连接端口是22,则需要开放这个端口
firewall-cmd --add-port=22/tcp
关闭临时端口
firewall-cmd --remove-port=80/tcp
3. 添加永久开放的端口
添加永久开放的端口(例如:22端口)
firewall-cmd --add-port=22/tcp --permanent
关闭永久端口
firewall-cmd --remove-port=80/tcp --permanent
4. 重启防火墙
配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld
5.4、使用命令行复制文件
scp是有Security的文件copy,基于ssh登录。操作起来比较方便,要把当前一个文件copy到远程另外一台主机上,可以使用该命令。
格式:
scp [可选参数] file_source file_target
完整命令
scp 本地用户名@IP地址:文件名1 远程用户名@IP地址:文件名2
由于本地无需指定,因此 本地用户名@IP地址:
可以不输入 , 需要输入远程用户名和所对应的密码
可能有用的几个参数 :
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误
-C 使能压缩选项 .
-P 选择端口 . 注意 -p 已经被 rcp 使用
scp -p 4588 [email protected]:/usr/local/sin.sh /home/administrator
-4 强行使用 IPV4 地址
-6 强行使用 IPV6 地址
1. 复制文件
- 复制到远程主机
把文件从当前系统复制到远程主机,可以输入如下命令,然后会提示你输入另外那台主机的root用户的登录密码,接着就开始复制了
scp D:\1.txt [email protected]:/root

- 复制到本地
如果想反过来操作,把文件从远程主机复制到当前系统,只需调换一下即可。
scp [email protected]:/root D:\test

2. 复制文件夹
- 复制到远程主机
使用-r
参数即可复制文件夹
把文件夹从当前系统复制到远程主机(test
文件夹放到了root
文件夹里面)
scp -r D:\test [email protected]:/root

- 复制到本地
scp -r [email protected]:/root/test D:\aaa

5.5、修改yum源
# 测试连通性
ping www.baidu.com
cd /etc/yum.repos.d
# 备份CentOS-Base.repo
mv ./CentOS-Base.repo ./CentOS-Base.repo.backup
# 下载yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除缓存
yum clean all && yum makecache
# 查看yum源
yum repolist
安装
wget
yum install wget
完整命令
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.119.104.189) 56(84) bytes of data.
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=1 ttl=52 time=32.8 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=2 ttl=52 time=26.8 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=3 ttl=52 time=26.3 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 26.339/28.687/32.842/2.949 ms
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo CentOS-Sources.repo
[root@localhost yum.repos.d]# mv ./CentOS-Base.repo ./CentOS-Base.repo.backup
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
--2023-03-07 13:59:44-- http://mirrors.aliyun.com/repo/Centos-7.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 180.101.198.211, 14.17.66.242, 180.101.198.210, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|180.101.198.211|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2523 (2.5K) [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/CentOS-Base.repo’
...
100%[=============================================================================>] 2,523 --.-K/s in 0.008s
2023-03-07 13:59:44 (303 KB/s) - ‘/etc/yum.repos.d/CentOS-Base.repo’ saved [2523/2523]
[root@localhost yum.repos.d]# yum clean all && yum makecache
Loaded plugins: fastestmirror
...
(10/10): updates/7/x86_64/primary_db | 19 MB 00:01:09
Metadata Cache Created
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 515
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 4,734
repolist: 15,321
5.6、yum常用功能
yum是一个在CentOS/RHEL系统上用于管理软件包的命令行工具。以下是yum的一些常用命令:
请注意,这些命令需要在具有管理员权限的帐户下运行。
更新所有软件包
yum update
安装软件包
yum install package_name
卸载软件包
yum remove package_name
搜索软件包
yum search search_term
显示软件包信息
yum info package_name
列出所有已安装软件包
yum list installed
清除缓存
yum clean all
5.7、查看是否安装某个软件
可以使用 rpm
命令来查看某个软件是否已经安装。具体方法如下:
rpm -qa | grep software_name
其中,software_name
是你要查找的软件的名称。该命令会列出所有已经安装的软件,并使用 grep
过滤出包含 software_name
的软件。
如果该命令没有输出任何结果,则表示该软件尚未安装。如果输出了软件的名称,则表示该软件已经安装。
另外,你也可以使用 yum
命令来查看软件是否已经安装。具体方法如下:
yum list installed | grep software_name
同样,software_name
是你要查找的软件的名称。该命令会列出所有已经安装的软件,并使用 grep
过滤出包含 software_name
的软件。
如果该命令没有输出任何结果,则表示该软件尚未安装。如果输出了软件的名称,则表示该软件已经安装。
还可以使用如下几种命令查找该软件的安装位置
[root@localhost local]# whereis redis
redis: /etc/redis.conf
[root@localhost local]# which redis
/usr/bin/which: no redis in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost local]# find / -name 'redis.conf'
/etc/redis.conf
[root@localhost local]# locate / redis # 如果命令不存在可以使用 yum install mlocate 命令安装
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
5.8、设置开机自启动
设置某个服务开机自启动
systemctl enable redis
自己创建启动配置
将Redis设置为开机自启动服务,可以按照以下步骤进行:
创建一个systemd服务文件,例如
redis.service
,并将其放在/etc/systemd/system/
目录下。在
redis.service
文件中,定义服务的详细信息,包括服务的描述、启动命令、服务类型等。例如:
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/bin/redis-server /etc/redis.conf
ExecStop=/usr/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
其中,Description
字段是服务的描述,After
字段指定服务应该在哪个目标之后启动,Type
字段指定服务的类型,User
和Group
字段指定服务应该以哪个用户和组的身份运行,ExecStart
字段指定Redis启动命令和配置文件的位置,ExecStop
字段指定Redis停止命令,Restart
字段指定服务应该在崩溃时自动重启,WantedBy
字段指定服务应该在哪个目标中启用。
- 重新加载systemd服务文件:
systemctl daemon-reload
- 启用Redis服务:
systemctl enable redis
现在,Redis将在系统启动时自动启动。你可以使用以下命令来启动、停止或重启Redis服务:
sudo systemctl start redis
sudo systemctl stop redis
sudo systemctl restart redis
5.9、手动安装Java
要在Linux上手动安装Java并配置环境变量,请按照以下步骤进行操作:
下载Java安装包。您可以从Oracle官网下载Java安装包
例如JDK 8:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
解压缩Java安装包。您可以使用以下命令解压缩:
tar -xvf jdk-8u301-linux-x64.tar.gz
请注意,此处的文件名可能会因您下载的Java版本而有所不同。
将Java安装到您选择的目录中。例如,您可以将Java安装到
/usr/local/java
目录中:mkdir /usr/local/java mv jdk1.8.0_301 /usr/local/java/
请注意,此处的文件名可能会因您下载的Java版本而有所不同。
配置Java环境变量。打开
/etc/profile
文件并在文件末尾添加以下行:export JAVA_HOME=/usr/local/java/jdk1.8.0_301 export PATH=$PATH:$JAVA_HOME/bin
保存并关闭文件。
使环境变量生效。使用以下命令使环境变量立即生效:
source /etc/profile
检查Java是否已成功安装。使用以下命令检查Java版本:
java -version
如果Java已成功安装,则会显示Java版本信息。
现在,您已经成功地在Linux上手动安装了Java并配置了环境变量。
5.10、杀死指定端口的进程
要关闭CentOS上的指定端口的进程,可以执行以下步骤:
- 1、用以下命令查找正在运行的进程并占用端口:
netstat -tulnp | grep <端口号>
# 或
lsof -i :<端口号>
例如,如果要查找占用端口号为80的进程,可以运行以下命令:
# 使用netstat (如果没有netstat命令需要安装net-tools,即 yum install net-tools)
netstat -tulnp | grep 6379
# 或使用 (如果没有需要安装 lsof , 即 yum install lsof)
lsof -i :6379
查找到占用端口号的进程PID,例如PID为1300。
[root@localhost ~]# netstat -tulnp | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 1300/redis-server 1
[root@localhost ~]# sudo lsof -i :6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 1300 redis 4u IPv4 18168 0t0 TCP localhost:6379 (LISTEN)
- 2、使用以下命令杀死该进程:
kill <PID>
例如,如果PID为1234,可以运行以下命令:
kill 1300
- 3、使用以下命令确认该进程已被杀死:
netstat -tulnp | grep <端口号>
例如,如果要确认端口号为80的进程已被杀死,可以运行以下命令:
netstat -tulnp | grep 6379
如果没有任何输出,则表示该端口没有进程正在占用。
redis
)
5.11、连不上虚拟机的某个服务(如1. 查看服务是否可用
我们先测试在虚拟机里面使用命令是否可以使用,可以看到redis
能够正常使用(如果不能使用,则证明安装或配置存在问题)
[root@localhost local]# redis-cli
127.0.0.1:6379> set name 123
OK
127.0.0.1:6379> get name
"123"
127.0.0.1:6379> exit
2. 查看某个服务的pid和端口
ps aux | grep <服务名>
例如查看redis(在虚拟机里执行)
[root@localhost ~]# ps aux | grep redis
redis 1300 0.0 0.5 143060 2644 ? Ssl 08:07 0:03 /usr/bin/redis-server 127.0.0.1:6379
root 1992 0.0 0.1 112812 976 pts/0 S+ 09:18 0:00 grep --color=auto redis
可以看到redis
的pid
为1300
,使用的ip
为127.0.0.1
,端口为6379
,如果没有查到证明redis
没有启动成功
3. 查看端口占用
netstat -tulnp | grep <端口号>
例如查看redis(在虚拟机里执行),可以看到redis
已经占用6379
端口了(如果修改了端口可以查看修改后的端口)
如果报
-bash: telnet: command not found
,使用如下命令安装telnet
yum install telnet
[root@localhost ~]# netstat -tulnp | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 1300/redis-server 1
4. 测试回环地址ip
使用127.0.0.1
的ip
测试6379
是否能访问(在虚拟机里执行),可以看到回环地址可以访问
[root@localhost local]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'. # 此时使用 ctrl + ] 快捷键
^]
telnet> quit
Connection closed.
5. 测试其他网卡ip
我们使用主机可以访问的ip
测试是否可以连接(在虚拟机里执行)
[root@localhost local]# telnet 192.168.56.11 6379
Trying 192.168.56.11...
telnet: connect to address 192.168.56.11: Connection refused
可以看到这里连接拒绝了,我们可以修改其配置文件,使其所有网卡的ip
都可访问(生产环境最好不要修改,使其不允许远程访问)
使用
ip addr
可以查看所有网卡的ip
(lo
表示回环地址,即127.0.0.1
)[root@localhost local]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:4d:77:d3 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0 valid_lft 64528sec preferred_lft 64528sec inet6 fe80::5054:ff:fe4d:77d3/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:ad:7a:5f brd ff:ff:ff:ff:ff:ff inet 192.168.56.11/24 brd 192.168.56.255 scope global noprefixroute eth1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fead:7a5f/64 scope link valid_lft forever preferred_lft forever
修改redis.conf
文件的bind
为0.0.0.0
,即使用所有网卡的ip
都可访问
bind 0.0.0.0
我们可以
find
命令查看配置文件的安装位置[root@localhost local]# find / -name 'redis.conf' /etc/redis.conf
再次测试时就可以访问了
[root@localhost local]# telnet 192.168.56.11 6379
Trying 192.168.56.11...
Connected to 192.168.56.11.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
此时再次执行
ps -ef | grep redis
就可以看到ip
为0.0.0.0
了,即使用所有网卡的ip
都可访问[root@localhost local]# ps -ef | grep redis redis 5707 1 0 13:08 ? 00:00:02 /usr/bin/redis-server 0.0.0.0:6379 root 7647 1858 0 13:46 pts/0 00:00:00 grep --color=auto redis
6. 访问虚拟机
我们使用主机可以访问的ip
测试是否可以连接(在主机里执行)
C:\Users\无名氏>telnet 192.168.56.11 6379
正在连接192.168.56.11...无法打开到主机的连接。 在端口 6379: 连接失败
可以看待连接失败了,此时应该是防火墙拦截了
7. 配置防火墙
如果使用的是
可以使用如下命令永久开放6379
端口
firewall-cmd --add-port=6379/tcp --permanent
再使用systemctl restart firewalld
命令重启防火墙
systemctl restart firewalld
此时在主机使用telnet 192.168.56.11 6379
命令连接,出现下面这种样子就证明可以访问了

使用redis
连接工具,可以看到连接redis
成功了

5.13、测试某个端口的连通性
1、telnet法
telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性
安装
telnet
可以使用如下命令yum install telnet
具体用法格式:
telnet ip port
ip:是测试主机的ip地址
port:是端口,比如80
连接成功会显示Escape character is '^]'.
即使用ctrl + ]
快捷键进入telnet
命令行,再输入quit
即可退出
[root@localhost ~]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
连接失败会显示Connection refused
即连接拒绝
[root@localhost ~]# telnet 127.0.0.1 80
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

安装telnet
可以使用如下命令
yum install telnet
windows
系统可以在 控制面板
-> 程序
-> 程序和功能
里的启用或关闭Windows功能
里开启Telnet 客户端

2、ssh法
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linux上可以通过ssh命令来测试端口的连通
可以使用如下命令安装
ssh
yum install openssh
用法:
ssh -v -p port username@ip
-v 调试模式(会打印日志).
-p 指定端口
username:远程主机的登录用户
ip:远程主机
如果远程主机开通了相应的端口,会有Connection established
已建立连接的提示。
[root@localhost ~]# ssh -v -p 6379 [email protected]
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 6379.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: SELinux support enabled
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: ssh_exchange_identification: -ERR unknown command 'SSH-2.0-OpenSSH_7.4'
如果远程主机没有开通相应的端口,则没有Connection established
的提示
[root@localhost ~]# ssh -v -p 80 [email protected]
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 80.
debug1: connect to address 127.0.0.1 port 80: Connection refused
ssh: connect to host 127.0.0.1 port 80: Connection refused

3、curl法
curl是利用URL语法在命令行方式下工作的开源文件传输工具。也可以用来测试端口的连通性
可以使用如下命令安装
curl
yum install curl
具体用法:
curl ip:port
ip:是测试主机的ip地址
port:是端口,比如80
如果远程主机开通了相应的端口,都会输出信息
[root@localhost ~]# curl 127.0.0.1:6379
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'User-Agent:'
如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开(或显示连接拒绝)。
[root@localhost ~]# curl 127.0.0.1:80
curl: (7) Failed connect to 127.0.0.1:80; Connection refused

4、wget方法
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是“World Wide Web”与“get”的结合
可以使用如下命令安装
wget
yum install wget
它也可以用来测试端口的连通性具体用法:
wget ip:port
ip:是测试主机的ip地址
port:是端口,比如80
如果远程主机存在该端口会输出如下信息
[root@localhost ~]# wget 127.0.0.1:6379
--2023-03-08 10:45:43-- http://127.0.0.1:6379/
Connecting to 127.0.0.1:6379... connected.
HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9
Length: unspecified
Saving to: ‘index.html.1’
[ <=> ] 118 --.-K/s in 0s
2023-03-08 10:45:43 (22.3 MB/s) - ‘index.html.1’ saved [118]
如果远程主机不存在端口则会一直提示连接主机(或显示连接拒绝)。
[root@localhost ~]# wget 127.0.0.1:80
--2023-03-08 10:45:36-- http://127.0.0.1/
Connecting to 127.0.0.1:80... failed: Connection refused.

nc
命令
5、nc(也称为netcat)是一种网络工具,可用于在网络上传输数据或连接不同的网络服务。
格式
nc命令的一般格式为:
nc [options] host port
其中,host表示要连接的远程主机名或IP地址,port表示要连接的远程端口号。options是可选参数,用于指定nc命令的不同选项,可以根据具体的需求选择使用。
除了上述基本格式,nc命令还有一些其他的命令格式,用于执行不同的任务,例如:
- 监听本地端口:
nc -l [options] [port]
- 发送文件到远程主机:
nc [options] host port < filename
- 接收远程主机发送的文件:
nc -l [options] [port] > filename
这些命令格式的具体用法和参数选项也可以通过man nc
命令来查看。
参数说明
以下是nc命令的一些常用参数和其含义:
-v:启用详细模式,显示更多的调试信息
-u:使用UDP协议而不是默认的TCP协议
-l:监听模式,用于等待客户端连接
-p port:指定本地端口
-n:禁用DNS解析,使用IP地址进行连接
-w timeout:设置超时时间
-z:使用扫描模式,不发送任何数据
-s source_ip:指定源IP地址
-c:关闭连接(在发送完数据后立即关闭连接)
-e command:在建立连接后执行命令(仅在使用监听模式时有效)
这些参数可以组合使用,以实现各种网络传输和连接的需求。要查看完整的nc命令文档和更多用法示例,可以在终端中输入man nc
命令。
常用命令
nc -l <port>
: 监听指定的端口,等待客户端连接。nc <host> <port>
: 连接指定的主机和端口。nc -v <host> <port>
: 显示详细的输出信息,包括连接状态、传输数据等。nc -z <host> <port>
: 尝试连接指定的主机和端口,但不发送任何数据。nc -u <host> <port>
: 使用UDP协议连接指定的主机和端口。nc -w <timeout> <host> <port>
: 设置连接的超时时间,单位为秒。nc -n
: 不使用DNS解析,直接使用IP地址连接。nc -c
: 允许多个客户端连接到服务端。nc -e <command>
: 连接成功后执行指定的命令。nc -k
: 在客户端和服务器之间保持连接,直到接收到中断信号。
示例
建立TCP连接:
nc -v host port
例如:
nc -v 192.168.1.1 80
建立UDP连接:
nc -u -v host port
例如:
nc -u -v 192.168.1.1 53
监听TCP端口:
nc -l -v port
例如:
nc -l -v 8080
监听UDP端口:
nc -u -l -v port
例如:
nc -u -l -v 53
文件传输:将文件发送到另一台计算机
发送端:
nc -v host port < file
接收端:
nc -l -v port > file
使用nc进行端口扫描:
nc -vz host start_port-end_port
例如:
nc -vz 192.168.1.1 1-1000
扫描多个主机的某一端口:
nc -zv target1.com target2.com target3.com 80
扫描多个主机的多个端口:
nc -zv target1.com 80 443 target2.com 22 target3.com 8080
nmap
命令
6、nmap是一款用于网络探测和安全评估的常用工具,以下是nmap命令的基本格式:
nmap [扫描类型选项] [扫描目标选项] [其他选项]
其中,扫描类型选项指定要执行的扫描类型,如TCP连接扫描、UDP扫描、操作系统检测、服务版本检测等。常用的扫描类型选项包括:
-sS
:TCP SYN扫描,也称为半开放扫描。-sT
:TCP连接扫描,也称为全连接扫描。-sU
:UDP扫描,用于发现UDP端口上运行的服务。-O
:操作系统检测,尝试识别目标主机的操作系统类型和版本。-sV
:服务版本检测,尝试确定目标主机上运行的服务的类型和版本。
扫描目标选项指定要扫描的目标主机、IP地址、域名或网段。常用的扫描目标选项包括:
- 主机名或IP地址:指定单个主机进行扫描。
- IP地址范围:指定要扫描的一段连续的IP地址。
- 域名:指定要扫描的域名。
- 网络号/掩码:指定要扫描的一个网络段。
其他选项包括一些控制扫描行为的选项,如扫描速度、输出格式、是否进行DNS解析等。常用的其他选项包括:
-T<0-5>
:指定扫描速度,数字越大扫描速度越快。-oN <file>
:将扫描结果输出到指定的文件中。-v
:显示详细的扫描结果。-Pn
:跳过主机的Ping检测,直接进行端口扫描。-sC
:使用默认脚本扫描,执行常规的安全检查。
常用命令
以下是nmap的一些常用命令及其示例:
- 基本TCP端口扫描:
nmap target.com
该命令将扫描target.com主机的所有TCP端口,显示所有开放的端口。
- 扫描单个端口:
nmap -p 22 target.com
该命令将扫描target.com主机的22号端口,如果该端口开放,则显示“open”状态。
- 扫描多个端口:
nmap -p 22,80,443 target.com
该命令将扫描target.com主机的22、80、443号端口,如果这些端口开放,则显示“open”状态。
- 扫描指定端口范围:
nmap -p 1-100 target.com
该命令将扫描target.com主机的1到100号端口,如果这些端口开放,则显示“open”状态。
- 指定扫描速度:
nmap -T4 target.com
该命令将以比默认速度更快的速度扫描target.com主机的所有端口。
- 扫描UDP端口:
nmap -sU target.com
该命令将扫描target.com主机上所有的UDP端口,以确定是否有开放的UDP端口。
- 操作系统检测:
nmap -O target.com
该命令将尝试识别target.com主机的操作系统类型和版本。
- 服务版本检测:
nmap -sV target.com
该命令将尝试确定target.com主机上运行的服务的类型和版本。
- 使用默认脚本扫描:
nmap -sC target.com
该命令将执行一些常见的安全检查,使用默认的脚本。
- 执行自定义脚本:
nmap --script=my_script.nse target.com
该命令将执行自定义的脚本my_script.nse,用于执行特定的安全检查。
- 扫描多个主机,使用空格或逗号分隔。
nmap -H 192.168.1.1,192.168.1.2,192.168.1.3
如果您想在扫描中使用其他选项,可以在命令行中添加它们。例如,要扫描TCP端口1到1024之间的端口,可以运行以下命令:
nmap -H 192.168.1.1,192.168.1.2,192.168.1.3 -p 1-1024
- 使用文件的方式扫描多个主机
要使用nmap扫描多个主机,您可以指定一个包含主机地址的文本文件作为nmap的输入。
以下是一些步骤来执行此操作:
- 创建一个文本文件,其中包含要扫描的主机地址。每行一个地址。例如:
192.168.1.1
192.168.1.2
192.168.1.3
- 在命令行中运行nmap,指定要扫描的主机文件。例如:
nmap -iL hosts.txt
这将扫描hosts.txt文件中列出的所有主机
5.6 查看已使用的端口
netstat -tulnp