telnet
打开telnet 功能
默认情况,在命令行下输入telnet会提示不是内部命令或外部命令。只需要打开即可:
- 1.在控制面板中点击程序选项。
- 2.点击启用或关闭Windows功能。
- 3.找到并勾选teInetclient选项。点击确定即可。
telnet 介绍
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
虽然Telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,Telnet并不被重用。原因在于Telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用Telnet服务。如果我们要使用Telnet的远程登录,使用前应在远端服务器上检查并设置允许Telnet服务的功能。
简单理解:可用于远程登录,端口号为23,但因为是明文传输,不推荐,推荐使用SSH (端口号为22)来做远程登录
更多是用来检查端口是否可用
telenet ip/域名 port
如:telnet www.baidu.com 80
检测到:会进入一个新的命令行界面。
ssh
参考:http://www.cncsto.com/article/5604
查看SSH客户端版本
ssh -V
连接远程主机
ssh name@remoteserver
连接远程主机并指定端口:
ssh name@remoteserver -p port
如:ssh liu@192.168.37.140 -p 22
通过远程主机1跳到远程主机2:
ssh -t remoteserver1 ssh remoteserver2
说明:当远程主机remoteserver2无法直接到达时,可以使用-t参数,然后由remoteserver1跳转到remoteserver2。在此过程中要先输入remoteserver1的密码,然后再输入remoteserver2的密码,然后就可以操作remoteserver2了。
通过SSH运行远程shell命令:
ssh -l name remoteserver ‘command'
我一般是在 cmd 上先连接到远程主机,连接上了直接输入命令即可。比如当本地开启了ubuntu linux,想要在windows 系统中终端操作。就可以:
1、windows 打开终端
2、ubuntu 中查看 ip(ifconfig)
3、在 cmd 终端 ping ip
看网络是否通了
4、 cmd 终端中输入 ssh liu@ip -p 22
,后输入 linux 账号密码即可
修改SSH监听端口:
默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。
一、打开 /etc/ssh/sshd_config,编辑该文件,同样找到如下位置:
在取消掉Port 22所在行的注释后,再新增一行,例如:
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 22
Port 2222
这样通过22和222端口都可以连接到服务器上了,这里注意不能只添加Port 2222,这样就变成修改了,22端口就连接不了了.
二、重启sshd服务
无论是修改SSH端口还是新增SSH端口,修改完配置文件后都要重启SSHD服务,使得修改生效。使用如下命令:
systemctl restart sshd
只允许SSH协议版本2:
有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑 /etc/ssh/sshd_config文件并查找下面这样的行:
`# Protocol 2,1`
`修改为`
`Protocol 2`
禁止root用户登录:
通常情况下,不采用直接用root用户登录到远程主机,由于root用户拥有超级权限,这样会带来安全隐患,所以,一般我们用普通用户登录,当需要管理远程主机时,再切换到root用户下。打开/etc/ssh/sshd_config文件并查找下面这样的行:
`#PermitRootLogin yes`
将#号去掉,然后将yes修改成no,重启ssh服务,这样就可以禁止root用户登录。
将#号去掉,然后将bannertest.txt文件的全路径替换/some/path,然后保存,重启ssh服务。当客户端登录时,就会看到bannertest.txt文件中的提示信息。
进行端口映射:
假如公司内网有台web服务器,但是只对内不对外,这样,外网就无法访问,可以用ssh进行端口映射来实现外网访问内网的web服务器。假如web服务器名为webserver,webserver可以用ssh访问到远端主机remoteserver,登录到webserver,然后用下面命令进行映射
命令格式:
ssh -R 3000:localhost:80 remoteserver
执行完成后,在remoteserver机器上,执行netstat -an | grep 3000,查看有没有开通3000端口。并执行以下命令观察是否可以打开webserver上的网页
w3m http://127.0.0.1:3000
如果能打开界面,说明映射成功.但是,这只限于本机访问web服务器,即只能remoteserver机器访问webserver。因为3000端口绑定的是remoteserver机器的127.0.0.1端口。可以编辑remoteserver机器上的/etc/ssh/sshd_config文件并添加如下内容:
添加 GatewayPorts yes 内容,把监听端口3000绑定到 0.0.0.0 地址上,这样外部的所有机器都能访问到这个监听端口,然后保存退出。并重启ssh服务。完成后其它机器就可以在浏览器中输入 http://remoteserver:3000来访问webserver了。
设置登录时提示信息
首先编辑一个文件,如bannertest.txt,文件内容自行定义。然后打开/etc/ssh/sshd_config文件并查找下面这样的行:
#Banner /some/path`
curl
参考:B站 技术蛋老师视频
curl是一个命令行访问URL的计算机逻辑语言的工具,发出网络请求,然后得到数据并提取出,显示在标准输出“stdout”上面,可以用它来构造http request报文,curl(CommandLine Uniform Resource Locator),即在命令行中利用URL进行数据或者文件传输。
优点:不需要借助浏览器,命令行即可、跨平台
支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。
如果你是win10系统及以上那么电脑自身就自带了curl无需另外下载!如果电脑本身没有curl那么请前往官网进行下载!
与ping 对比:可以拿到响应的资源
查看版本
curl -V
输出:
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL</pre>
请求相关
发送请求
curl URL Get请求
eg: curl https://www.baidu.com/
curl -X -POST URL -d ’数据‘ / curl -XPOST URL -d ’数据‘ Post请求
eg: curl -XPOST https://www.baidu.com/
使用该-F选项时,curl使用的默认Content-Type是“multipart/form-data”,以key=value配对形式
curl -XPOST http://127.0.0.1:8000/login -F 'name=Jason' -F 'email=jason@example.com'
使用-d选项,可以使用&符号对发送数据进行合并
curl -XPOST http://127.0.0.1:8000/login -d 'name=Jason&email=jason@example.com'
使用-H选项,指定Content-Type为application/json发送JSON对象
curl -XPOST http://127.0.0.1:8000/login -H "Content-Type:application/json" -d '{"user": "admin", "passwd":"12345678"}' # 通过-d指定json data内容
curl -X -PUT URL / curl -XPUT URL -d 数据 Put请求
eg: curl -XPUT https://www.baidu.com/
curl -X -DELETE URL / curl -XDELETE URL Delete请求
eg: curl -XDELETE https://www.baidu.com/</pre>
获取响应头信息
curl -I URL
下载上传
注意大小写
把a.tar下载到本地了;
curl -O URL
eg: curl -O http://a.b.c/a.tar
把a.tar下载下来顺便改名为newName.tar
curl -o newName.tar URL
eg: curl -o home.html http://a.b.c/a.tar
限制下载速度(默认速度字节,适合大文件下载)
curl --limit-rate 速度 URL
curl -C - URL 继续之前中断的下载(注意-)
下载ftp协议的文件:(加了用户账号密码)
curl -u 用户名:密码 -O URL</pre>
上传
curl -u 用户名:密码 -T 文件名 URL</pre>
跟随重定向
curl 默认不会跟随重定向,加-L就会跟随重定向
curl -L URL
代理访问
curl --proxy 协议://用户名:密码@代理地址:端口 URL
查看问题
显示连接响应头部、响应结果等,建议加上
curl -v URL
ping
Ping 检查连通性
使用Ping检查连通性有五个步骤:
-
使用ipconfig / ifconfig(linux)观察本地网络设置是否正确
-
ping 127.0.0.1,127.0.0.1 回送地址,Ping回送地址是为了检查本地基础网络配置是否正常,TCP/IP协议有没有设置好;
-
ping本机IP地址,这样是为了检查本机的IP地址是否设置有误;
(有些电脑hosts 文件把localhost 解析为127.0.0.1,因此建议直接用ip地址)
-
Ping默认网关,通过是ping 路由器,这样的是为了检查硬件设备如路由器是否有问题
前四步ok证明不是主机或者网络问题。
-
ping 目标ip 如ping 10.2.33.22
如果ping 失败,则证明是外界原因。可能是对方主机不在线,或者防火墙禁止了ping 请求,或者数据包丢失等
-
ping 目标主机名(域名) 如ping www.baidu.com
其实 ping 域名,是先根据域名解析获取ip地址,然后再ping ip,也可以从日志看到ip地址
以脸书和百度为例,脸书禁止访问
image-20221124123645854.png image-20221124124110608.png
ping 接收参数分析
from:ping 的ip地址
icmp_seq:第几次请求,icmp是网络层的协议
ttl:time to live,有初始值,每经过一个值为-1,当为0则丢弃,防止数据包一直在
time: 单位ms,ping 命令会计时从发送请求到接收到所花费的时间</pre>
ping 常用指令
ping ip/域名
ping -c num ip/域名 指定ping的请求次数
ping -c num -q ip/域名 减少打印信息(quit)
ping -a ip/域名 ping 成功发出声音(audio)
ping -i num ip/域名 间隔num时间,单位s,发送一次请求
window:发送4条请求,超时则展示’请求超时‘
linux 、macos:无限发送请求,使用ctrl + C 进行中断。一直等待请求结果
错误分析
1.Request timed out
这是大家经常碰到的提示信息,很多文章中说这是对方机器置了过滤ICMP数据包,从上面工作过程来看,这是不完全正确的,至少有下几种情况。
(1)对方已关机,或者网络上根本没有这个地址:比如在上图中主机A中PING 192.168.0.7,或者主机B关机了,在主机A中PING 192.168.0.5 都会得到超时的信息。
(2)对方与自己不在同一网段内,通过路由也无法找到对方,但有时对方确实是存在的。当然不存在也是返回超时的信息。
(3)对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)。
怎样知道对方是存在,还是不存在呢,可以用带参数 -a 的Ping命令探测对方,如果能得到对方的NETBIOS名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是对方不存在或关机,或不在同一网段内。
(4)错误设置IP地址
正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP地址(这些地址一定要处于不同的IP子网)。但如果一台电脑的“拨号网络适配器”(相当于一块软网卡)的TCP/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题:
A.主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段。
B.主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法处理,超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台机器了。
2.Destination host Unreachable
目标主机无法访问
(1)对方与自己不在同一网段内,而自己又未设置默认的路由,比如上例中A机中不设定默认的路由,运行Ping 192.168.0.1.4就会出现“Destination host Unreachable”。
同一网段:https://baike.baidu.com/item/%E5%90%8C%E4%B8%80%E7%BD%91%E6%AE%B5/448495?fr=aladdin
(2) 网线 出了故障
这里要说明一下“destination host unreachable”和 “time out”的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“time out”,如果路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。3.Bad IP address
这个信息表示您可能没有连接到DNS服务器,所以无法解析这个IP地址,也可能是IP地址不存在。
3.Source quench received
这个信息比较特殊,它出现的机率很少。它表示对方或中途的服务器繁忙无法回应。
4.Unknown host——不知名主机
这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成IP地址。故障原因可能是域名服务器有故障,或者其名字不正确,或者网络管理员的系统与远程主机之间的通信线路有故障。
5.No answer——无响应
这种故障说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信息。故障原因可能是下列之一:中心主机没有工作;本地或中心主机网络配置不正确;本地或中心的路由器没有工作;通信线路有故障;中心主机存在路由选择问题。
6.Ping 127.0.0.1:127.0.0.1是本地循环地址
如果本地址无法Ping通,则表明本地机TCP/IP协议不能正常工作。
7.no rout to host:网卡工作不正常。
8.transmit fai led ,error code:10043网卡驱动不正常。
9.unknown host name:DNS配置不正确。
4、如何用Ping命令来判断一条链路好坏?
net start/stop
用于查看、启动或停止远程主机上的某个服务,
其语法格式为:
net start 查看本机或远程主机已启动服务。
net start [服务名称] 启动某个服务
net stop [服务名称] 停止某个服务
网友评论