Skip to content

网络配置与诊断 操作与命令 ​

专用工具与其他操作 ​

curl · 从服务器接收数据或者向服务器发送数据 ​

支持包括 HTTP、HTTPS、FTP 和 SCP 在内的大多数协议。 另请参阅:wcurl, wget。 更多信息:https://curl.se/docs/manpage.html。

  • 发起 HTTP GET 请求,将响应内容输出到 stdout:
bash
curl {{https://example.com}}
  • 发起 HTTP GET 请求,自动跟随所有 3xx 重定向,将响应头和内容输出到 stdout:
bash
curl {{[-L|--location]}} {{[-D|--dump-header]}} - {{https://example.com}}
  • 按照 URL 指定的文件名保存下载内容:
bash
curl {{[-O|--remote-name]}} {{https://example.com/filename.zip}}
  • 以表单编码格式发送数据(application/x-www-form-urlencoded 类型的 POST 请求)。如需从 stdin 读取数据,可使用 --data @file_name 或 --data @'-':
bash
curl {{[-X|--request]}} POST {{[-d|--data]}} '{{name=bob}}' {{http://example.com/form}}
  • 通过代理(如 BurpSuite)使用自定义 HTTP 方法发送带有额外请求头的请求,同时忽略不安全的自签名证书:
bash
curl {{[-k|--insecure]}} {{[-x|--proxy]}} {{http://127.0.0.1:8080}} {{[-H|--header]}} '{{Authorization: Bearer token}}' {{[-X|--request]}} {{GET|PUT|POST|DELETE|PATCH|...}} {{https://example.com}}
  • 设置正确的 Content-Type 请求头,以 JSON 格式发送数据:
bash
curl {{[-d|--data]}} '{{{"name":"bob"}}}' {{[-H|--header]}} '{{Content-Type: application/json}}' {{http://example.com/users/1234}}
  • 跳过证书验证,使用客户端证书和私钥发起请求:
bash
curl {{[-E|--cert]}} {{client.pem}} --key {{key.pem}} {{[-k|--insecure]}} {{https://example.com}}
  • 将主机名解析为自定义 IP 地址,以详细模式输出结果(类似于通过编辑 /etc/hosts 文件自定义 DNS 解析):
bash
curl {{[-v|--verbose]}} --resolve {{example.com}}:{{80}}:{{127.0.0.1}} {{http://example.com}}

ssh · 安全 Shell 是一种用于安全登录远程系统的协议 ​

它可用于在远程服务器上记录或执行命令。 更多信息:https://man.openbsd.org/ssh。

  • 连接到远程服务器:
bash
ssh {{用户名}}@{{远程主机地址}}
  • 使用特定身份(私钥)连接到远程服务器:
bash
ssh -i {{路径/到/私钥文件}} {{用户名}}@{{远程主机地址}}
  • 使用指定端口号连接到远程服务器:
bash
ssh {{用户名}}@{{远程主机地址}} -p {{端口号}}
  • 在具有伪终端分配的远程服务器上运行命令,允许与远程命令进行交互:
bash
ssh {{用户名}}@{{远程主机地址}} -t {{命令}} {{命令参数}}
  • SSH 隧道:动态端口转发(localhost:1080 上的 SOCKS 代理):
bash
ssh -D {{1080}} {{用户名}}@{{远程主机地址}}
  • SSH 隧道:转发特定端口(localhost:9999 到 example.org:80)以及禁用伪终端分配和远程命令的执行:
bash
ssh -L {{9999}}:{{example.org}}:{{80}} -N -T {{用户名}}@{{远程主机地址}}
  • SSH 转发:通过跳转主机连接到远程服务器(可以指定多个跳转,以逗号分隔):
bash
ssh -J {{用户名}}@{{跳转主机地址}} {{用户名}}@{{远程主机地址}}
  • 关闭挂起的会话:
bash
<回车键><~><.>

ssh-add · 在 ssh 代理中管理加载的 ssh 密钥 ​

需要确保 ssh 代理已启动并正在运行以加载其中的密钥。 更多信息:https://man.openbsd.org/ssh-add。

  • 将 ~/.ssh 中的默认 SSH 密钥添加到 SSH 代理:
bash
ssh-add
  • 向 ssh 代理添加指定密钥:
bash
ssh-add {{路径/到/私钥文件}}
  • 列出当前加载的密钥的指纹:
bash
ssh-add -l
  • 从 ssh 代理中删除密钥:
bash
ssh-add -d {{路径/到/私钥文件}}
  • 从 ssh 代理中删除所有当前已有的密钥:
bash
ssh-add -D
  • 向 ssh 代理和密钥链添加密钥:
bash
ssh-add -K {{路径/到/私钥文件}}

ssh-copy-id · 在远程机器的 authorized_keys 中安装您的公钥 ​

更多信息:https://manned.org/ssh-copy-id。

  • 将您的密钥复制到远程主机:
bash
ssh-copy-id {{用户名}}@{{远程主机}}
  • 将给定的公钥文件复制到远程主机:
bash
ssh-copy-id -i {{路径/到/公钥文件}} {{用户名}}@{{远程主机}}
  • 将给定的公钥文件通过特定端口复制到远程主机:
bash
ssh-copy-id -i {{路径/到/公钥文件}} -p {{端口}} {{用户名}}@{{远程主机}}

示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。

继续阅读