第7章:网络-------网络工具:测试、访问、传输
访问

ssh命令;关于后台ssh服务的相关;ssh无密码(密钥验证)登录的配置 ----------------------------------------------------------------- 1.登录 ssh -p22 root@192.168.25.137 2.直接执行命令 -->最好全路径 ssh root@192.168.25.137 ls -ltr /backup/data ==>ssh root@192.168.25.137/bin/ls -ltr /backup/data 3.查看已知主机 cat /root/.ssh/known_hosts 4.ssh远程执行sudo命令 ssh -t root@192.168.25.137 sudo rsync hosts/etc/ 5.scp 1.功能 -->远程文件的安全(加密)拷贝 scp -P22 -r -p/home/omd/h.txt root@192.168.25.137:/home/omd/ 2.scp知识小结 scp是加密远程拷贝,cp为本地拷贝 可以推送过去,也可以拉过来 每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync 6.ssh自带的sftp功能 1.Window和Linux的传输工具 wincp filezip sftp -->基于ssh的安全加密传输 samba 2.sftp客户端连接 sftp -oPort=22 root@192.168.25.137 put/etc/hosts /tmp get/etc/hosts /home/omd 3.sftp小结: 1.linux下使用命令:sftp -oPort=22 root@x.x.x.x 2.put加客户端本地路径上传 3.get下载服务器端内容到本地 4.远程连接默认连接用户的家目录 ---------------------------- 关于后台ssh服务的相关 # 查询openssl软件 rpm -qa openssh openssl # 查询sshd进程 ps -ef | grep ssh --> /usr/sbin/sshd # 查看ssh端口 netstat -lntup | grep ssh ss | grep ssh (效果同上,同下,好用) netstat -a | grep ssh(记住这个) netstat -lnt | grep 22 ==> 查看22端口有没有开/ssh服务有没有开启 技巧: netstat -lnt | grep ssh | wc -l -->只要大于2个就是ssh服务就是好的 # 查看ssh的秘钥目录 ll /root/.ssh/known_hosts # 当前用户家目录的.ssh目录下 # ssh的配置文件 cat /etc/ssh/sshd_config # ssh服务的关闭 service sshd stop # ssh服务的开启: service sshd start # ssh服务的重启 service sshd reload [停止进程后重启] ==> 推荐 service sshd restart [干掉进程后重启] ==> 不推荐 # ssh远程登录 ssh 192.168.1.100 # 默认利用当前宿主用户的用户名登录 ssh root@192.168.1.100 # 利用远程机的用户登录 ssh root@192.168.1.100 -o stricthostkeychecking=no # 首次登陆免输yes登录 ssh root@192.168.1.100 "ls /home/omd" # 当前服务器A远程登录服务器B后执行某个命令 ssh root@192.168.1.100 -t "sh /home/omd/ftl.sh" # 当前服务器A远程登录服务器B后执行某个脚本 ssh排查问题 1.判断物理链路是否通 ping 192.168.25.130 线路 | 防火墙 | 是否同一个网的 ping 本身是icmp协议 2.判断服务是否正常 telnet 192.168.25.130 22 3.Linux防火墙 service iptables status ==> /etc/init.d/iptables status 4.打开ssh的调测进行观察 ssh -vvv omd@192.168.1.100 ================================== SSH无密码(密钥验证)登录的配置 配置主机A免密登录到主机B 方法一) 1.在主机A生产密钥对: ssh-keygen -t rsa, 会在.ssh目录下产生密钥文件 2.拷贝主机A的公钥到主机B: scp id_rsa.pub host_name:file_dir 3.将主机A的公钥加到主机B的授权列表.ssh/authorized_keys(若不存在,手动创建): cat id_rsa.pub >> authorized_keys 4.授权列表authorized_keys的权限必须是600,chmod 600 authorized_keys 方法二) #进入到我的home目录 cd ~/.ssh ssh-keygen -t rsa (四个回车) 执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥) 将公钥拷贝到要免登陆的机器上: ssh-copy-id localhost 在服务器添加完公钥后报错 sign_and_send_pubkey: signing failed: agent refused operation 这个时候我们只要执行下 eval "$(ssh-agent -s)" ssh-add ssh免密总结链接:https://www.cnblogs.com/chenxiaoy/p/9845661.html

/etc/ssh/sshd_config UseDNS yes #导致ssh连接慢,改为no即可 /root/.ssh该目录下应该是保存了ssh的相关信息 该目录下默认有2个文件:authorized_keys known_hosts known_hosts:默认是空文件;通过ssh登录到某台设备后,known_hosts即会生成相应的内容 例如 ssh 192.168.1.90 后,known_hosts会保存有相应的内容 authorized_keys:默认是空文件 https://www.cnblogs.com/xj-blog/p/10002578.html

curl命令 ===================================================== curl(CommandLine Uniform Resource Locator),即在命令行中利用URL进行数据或者文件传输。 curl是一个命令行访问URL的工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。可以用它构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能,curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。 常用选项: -v 详细输出,包含请求和响应的首部 -o test 将指定curl返回保存为test文件,内容从html/jpg到各种MIME类型文件 -O 把输出写到该文件中,保留远程文件的文件名 -C 在保存文件时进行续传 -x ip:port 指定使用的http代理 -c <file> 保存服务器的cookie文件 -H <header:value> 为HTTP请求设置任意header及值 -L 跟随重定向 -S 显示错误信息 -s 静默模式,不输出任何信息 -G 以get的方式发送数据 -f 连接失败是不显示http错误 -d 以post方式传送数据 实例 1.访问页面,默认将输出打印到标准输出中(STDOUT)中 curl http://www.centos.org 2.下载并保存文件 curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html #将文件保存为命令行中指定的文件名的文件中 curl -O http://www.gnu.org/software/gettext/manual/gettext.html #使用URL中默认的文件名保存文件到本地 3.同时获取多个文件 curl -O URL1 -O URL2 4.断点续传 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html #通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载 5.对CURL使用网络限速 curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html #下载速度最大不会超过1000B/second 6.CURL授权 curl -u username URL #通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露 curl -u username:password URL #在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权 7.从FTP服务器下载文件 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/ #列出public_html下的所有文件夹和文件 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php #下载xss.php文件 8.上传文件到FTP服务器 curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com #将myfile.txt文件上传到服务器 curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com # 同时上传多个文件 curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt # 从标准输入获取内容保存到服务器指定的文件中 9.上传文件 curl --form "fileupload=@filename.txt" http://hostname/resource 10.为CURL设置代理 curl -x proxysever.test.com:3128 http://google.co.in #指定代理主机和端口;-x 选项可以为CURL添加代理功能; 11.保存与使用网站cookie信息 curl -D sugarcookies http://localhost/sugarcrm/index.php #将网站的cookies信息保存到sugarcookies文件中 curl -b sugarcookies http://localhost/sugarcrm/index.php # 使用上次保存的cookie信息 12.传递请求数据 curl -u username https://api.github.com/user?access_token=XXXXXXXXXX #默认curl使用GET方式请求数据 curl -u username --data "param1=value1¶m2=value" https://api.github.com #通过 --data/-d 方式指定使用POST方式传递数据 curl --data @filename https://github.api.com/authorizations # 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端 注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20 curl -d "value%201" http://hostname.com 在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。 curl --data-urlencode "value 1" http://hostname.com 除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议 curl -I -X DELETE https://api.github.cim 13.只返回状态码 curl -I -m 15 -o /dev/null -s -w %{http_code} www.baidu.com -I #仅测试HTTP头信息 -m 15 #最多查询15s -o /dev/null #屏蔽原有输出信息 -s #静默模式,不输出任何东西 -w %{http_code} #控制额外输出 14.自定义显示文字和返回状态码 curl -I -m 15 -o /dev/null -s -w "我爱你:%{http_code}" www.baidu.com 15. 在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史命令记录时不会将密码泄露,本例以访问svn服务器为例。 curl -u 用户名 svn服务器地址,之后输入密码即可看到目录
传输

wget命令;curl和wget区别 ===================================================================== wget是Linux中的一个下载文件的工具,wget是在Linux下开发的开放源代码的软件 GNU Wget 1.14,非交互式的网络文件下载工具。 用法: wget [选项]... [URL]... 长选项所必须的参数在使用短选项时也是必须的。 启动: -V, --version 显示 Wget 的版本信息并退出。 -h, --help 打印此帮助。 -b, --background 启动后转入后台。 -e, --execute=COMMAND 运行一个“.wgetrc”风格的命令。 日志和输入文件: -o, --output-file=FILE 将日志信息写入 FILE。 -a, --append-output=FILE 将信息添加至 FILE。 -d, --debug 打印大量调试信息。 -q, --quiet 安静模式 (无信息输出)。 -v, --verbose 详尽的输出 (此为默认值)。 -nv, --no-verbose 关闭详尽输出,但不进入安静模式。 --report-speed=TYPE Output bandwidth as TYPE. TYPE can be bits. -i, --input-file=FILE 下载本地或外部 FILE 中的 URLs。 -F, --force-html 把输入文件当成 HTML 文件。 -B, --base=URL 解析与 URL 相关的 HTML 输入文件 (由 -i -F 选项指定)。 --config=FILE Specify config file to use. 下载: -t, --tries=NUMBER 设置重试次数为 NUMBER (0 代表无限制)。 --retry-connrefused 即使拒绝连接也是重试。 -O, --output-document=FILE 将文档写入 FILE。 -nc, --no-clobber skip downloads that would download to existing files (overwriting them). -c, --continue 断点续传下载文件。 --progress=TYPE 选择进度条类型。 -N, --timestamping 只获取比本地文件新的文件。 --no-use-server-timestamps 不用服务器上的时间戳来设置本地文件。 -S, --server-response 打印服务器响应。 --spider 不下载任何文件。 -T, --timeout=SECONDS 将所有超时设为 SECONDS 秒。 --dns-timeout=SECS 设置 DNS 查寻超时为 SECS 秒。 --connect-timeout=SECS 设置连接超时为 SECS 秒。 --read-timeout=SECS 设置读取超时为 SECS 秒。 -w, --wait=SECONDS 等待间隔为 SECONDS 秒。 --waitretry=SECONDS 在获取文件的重试期间等待 1..SECONDS 秒。 --random-wait 获取多个文件时,每次随机等待间隔 0.5*WAIT...1.5*WAIT 秒。 --no-proxy 禁止使用代理。 -Q, --quota=NUMBER 设置获取配额为 NUMBER 字节。 --bind-address=ADDRESS 绑定至本地主机上的 ADDRESS (主机名或是 IP)。 --limit-rate=RATE 限制下载速率为 RATE。 --no-dns-cache 关闭 DNS 查寻缓存。 --restrict-file-names=OS 限定文件名中的字符为 OS 允许的字符。 --ignore-case 匹配文件/目录时忽略大小写。 -4, --inet4-only 仅连接至 IPv4 地址。 -6, --inet6-only 仅连接至 IPv6 地址。 --prefer-family=FAMILY 首先连接至指定协议的地址 FAMILY 为 IPv6,IPv4 或是 none。 --user=USER 将 ftp 和 http 的用户名均设置为 USER。 --password=PASS 将 ftp 和 http 的密码均设置为 PASS。 --ask-password 提示输入密码。 --no-iri 关闭 IRI 支持。 --local-encoding=ENC IRI (国际化资源标识符) 使用 ENC 作为本地编码。 --remote-encoding=ENC 使用 ENC 作为默认远程编码。 --unlink remove file before clobber. 目录: -nd, --no-directories 不创建目录。 -x, --force-directories 强制创建目录。 -nH, --no-host-directories 不要创建主目录。 --protocol-directories 在目录中使用协议名称。 -P, --directory-prefix=PREFIX 以 PREFIX/... 保存文件 --cut-dirs=NUMBER 忽略远程目录中 NUMBER 个目录层。 HTTP 选项: --http-user=USER 设置 http 用户名为 USER。 --http-password=PASS 设置 http 密码为 PASS。 --no-cache 不在服务器上缓存数据。 --default-page=NAME 改变默认页 (默认页通常是“index.html”)。 -E, --adjust-extension 以合适的扩展名保存 HTML/CSS 文档。 --ignore-length 忽略头部的‘Content-Length’区域。 --header=STRING 在头部插入 STRING。 --max-redirect 每页所允许的最大重定向。 --proxy-user=USER 使用 USER 作为代理用户名。 --proxy-password=PASS 使用 PASS 作为代理密码。 --referer=URL 在 HTTP 请求头包含‘Referer: URL’。 --save-headers 将 HTTP 头保存至文件。 -U, --user-agent=AGENT 标识为 AGENT 而不是 Wget/VERSION。 --no-http-keep-alive 禁用 HTTP keep-alive (永久连接)。 --no-cookies 不使用 cookies。 --load-cookies=FILE 会话开始前从 FILE 中载入 cookies。 --save-cookies=FILE 会话结束后保存 cookies 至 FILE。 --keep-session-cookies 载入并保存会话 (非永久) cookies。 --post-data=STRING 使用 POST 方式;把 STRING 作为数据发送。 --post-file=FILE 使用 POST 方式;发送 FILE 内容。 --content-disposition 当选中本地文件名时 允许 Content-Disposition 头部 (尚在实验)。 --content-on-error output the received content on server errors. --auth-no-challenge 发送不含服务器询问的首次等待 的基本 HTTP 验证信息。 HTTPS (SSL/TLS) 选项: --secure-protocol=PR choose secure protocol, one of auto, SSLv2, SSLv3, TLSv1, TLSv1_1 and TLSv1_2. --no-check-certificate 不要验证服务器的证书。 --certificate=FILE 客户端证书文件。 --certificate-type=TYPE 客户端证书类型,PEM 或 DER。 --private-key=FILE 私钥文件。 --private-key-type=TYPE 私钥文件类型,PEM 或 DER。 --ca-certificate=FILE 带有一组 CA 认证的文件。 --ca-directory=DIR 保存 CA 认证的哈希列表的目录。 --random-file=FILE 带有生成 SSL PRNG 的随机数据的文件。 --egd-file=FILE 用于命名带有随机数据的 EGD 套接字的文件。 FTP 选项: --ftp-user=USER 设置 ftp 用户名为 USER。 --ftp-password=PASS 设置 ftp 密码为 PASS。 --no-remove-listing 不要删除‘.listing’文件。 --no-glob 不在 FTP 文件名中使用通配符展开。 --no-passive-ftp 禁用“passive”传输模式。 --preserve-permissions 保留远程文件的权限。 --retr-symlinks 递归目录时,获取链接的文件 (而非目录)。 WARC options: --warc-file=FILENAME save request/response data to a .warc.gz file. --warc-header=STRING insert STRING into the warcinfo record. --warc-max-size=NUMBER set maximum size of WARC files to NUMBER. --warc-cdx write CDX index files. --warc-dedup=FILENAME do not store records listed in this CDX file. --no-warc-compression do not compress WARC files with GZIP. --no-warc-digests do not calculate SHA1 digests. --no-warc-keep-log do not store the log file in a WARC record. --warc-tempdir=DIRECTORY location for temporary files created by the WARC writer. 递归下载: -r, --recursive 指定递归下载。 -l, --level=NUMBER 最大递归深度 (inf 或 0 代表无限制,即全部下载)。 --delete-after 下载完成后删除本地文件。 -k, --convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件。 --backups=N before writing file X, rotate up to N backup files. -K, --backup-converted 在转换文件 X 前先将它备份为 X.orig。 -m, --mirror -N -r -l inf --no-remove-listing 的缩写形式。 -p, --page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。 --strict-comments 用严格方式 (SGML) 处理 HTML 注释。 递归接受/拒绝: -A, --accept=LIST 逗号分隔的可接受的扩展名列表。 -R, --reject=LIST 逗号分隔的要拒绝的扩展名列表。 --accept-regex=REGEX regex matching accepted URLs. --reject-regex=REGEX regex matching rejected URLs. --regex-type=TYPE regex type (posix|pcre). -D, --domains=LIST 逗号分隔的可接受的域列表。 --exclude-domains=LIST 逗号分隔的要拒绝的域列表。 --follow-ftp 跟踪 HTML 文档中的 FTP 链接。 --follow-tags=LIST 逗号分隔的跟踪的 HTML 标识列表。 --ignore-tags=LIST 逗号分隔的忽略的 HTML 标识列表。 -H, --span-hosts 递归时转向外部主机。 -L, --relative 只跟踪有关系的链接。 -I, --include-directories=LIST 允许目录的列表。 --trust-server-names use the name specified by the redirection url last component. -X, --exclude-directories=LIST 排除目录的列表。 -np, --no-parent 不追溯至父目录。 用法示例: 1、使用 wget 下载单个文件 wget http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz #从网络下载一个文件并保存在当前目录 2、使用 wget -O 下载并以不同的文件名保存 wget -O wordpress.tar.gz http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz 3、使用 wget -c 断点续传 wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz 4、使用 wget -b 后台下载 wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz #将把输出写入至 “wget-log”。 5、伪装代理名称下载 有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。 6、使用 wget –spider 测试下载链接 wget –spider URL 你可以在以下几种情况下使用spider参数: 1 定时下载之前进行检查 2 间隔检测网站是否可用 3 检查网站页面的死链接 7、使用 wget –tries 增加重试次数 wget –tries=40 URL #wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。 8、使用 wget -i 下载多个文件 cat > filelist.txt #首先,保存一份下载链接文件 wget -i filelist.txt #接着使用这个文件和参数-i下载 9、使用 wget –mirror 镜像网站 10、使用 wget –reject 过滤指定格式下载 wget –reject=gif url #你想下载一个网站,但你不希望下载图片,你可以使用以下命令。 11、使用 wget -o 把下载信息存入日志文件 wget -o download.log URL #你不希望下载信息直接显示在终端而是在一个日志文件 ========================================================================================================================================================== curl和wget区别 curl和wget基础功能有诸多重叠,如下载等。 curl由于可自定义各种请求参数所以在模拟web请求方面更擅长;wget由于支持ftp和Recursive所以在下载文件方面更擅长。类比的话curl是浏览器,而wget是迅雷9。 1.下载文件 curl -O http://man.linuxde.net/text.iso #O大写,不用O只是打印内容不会下载 wget http://www.linuxde.net/text.iso #不用参数,直接下载文件 2.下载文件并重命名 curl -o rename.iso http://man.linuxde.net/text.iso #o小写 wget -O rename.zip http://www.linuxde.net/text.iso #O大写 3.断点续传 curl -O -C - http://man.linuxde.net/text.iso #O大写,C大写 wget -c http://www.linuxde.net/text.iso #c小写 4.限速下载 curl --limit-rate 50k -O http://man.linuxde.net/text.iso wget --limit-rate=50k http://www.linuxde.net/text.iso 5.显示响应头部信息 curl -I http://man.linuxde.net/text.iso wget --server-response http://www.linuxde.net/test.iso 6.wget利器--打包下载网站 wget --mirror -p --convert-links -P /var/www/html http://man.linuxde.net/

rz、sz命令;scp命令;ftp命令 ========================================================================================================== lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议,可以用在windows与linux 系统之间的文件传输,体积小速度快。 lrzsz 在线安装: yum -y install lrzsz 上传命令 rz 下载命令 sz filename ------------------------------------------------------------------------------------------------------------- scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。 用法: scp local_file remote_username@remote_ip:remote_folder scp local_file remote_username@remote_ip:remote_file scp local_file remote_ip:remote_folder scp local_file remote_ip:remote_file 实例: scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3 scp *`hostname`.tar.gz root@10.0.0.1:/tmp/test001/ scp ./*`hostname`.tar.gz root@10.0.0.1:/tmp/test001/ scp ./*`hostname`* root@10.0.0.1:/tmp/test001/ #实测可以上传多个文件 ------------------------------------------------------------------------------------------------------------- # ftp:启动FTP程序 ftp> open:打开 close:关闭 bye:离开 get:下载 put:上传 mget/mput:多个文件下载/上传 reget:恢复下载 binary:二进制传送文件 ascii:ASCII码传送 cd:改变远程目录 lcd:改变本地目录 mkdir:建目录 rmdir:删除目录 delete:删除文件 mdelete:一次删除多个 rename:重命名 status:显示状态 prompt:交互式 hash:每传送1024字节显示#(hash) size:显示文件大小 reset:重置 ------------------------------------ 示例 1. 连接ftp服务器 ftp 192.168.1.1 2. 下载文件 ftp> get /usr/your/1.htm 1.htm ftp> cd /usr/your/ ftp> mget *.* #从远端主机接收一批文件至本地主机。 此时每下载一个文件,都会有提示。如果要除掉提示,则在mget *.* 命令前先执行:prompt off 3.上传文件 ftp> put 1.htm /usr/your/2.htm ftp> cd /usr/your ftp> mput *.htm #把本地当前目录下所有html文件上传到服务器/usr/your/ 下 4. 断开连接 ftp> bye
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!