Linux SSH工具与wget、curl、scp命令详解

一、SecureCRT

SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT的SSH协议支持DES,3DES和RC4密码和密码与RSA鉴别。在今后的工作和学习中会经常的用到用来连接linux服务器。

SecureCRT的下载

SecureCRT下载需要到官网去下载,下载地址如下:

正版官网下载地址:

VanDyke Software - Download SecureCRT for Windows, Mac, and Linux

以下是我下载的安装包:

百度网盘 请输入提取码
提取码:40xe

1. 下载完成后将压缩包解压缩到自己电脑的想要压缩的安装目录下。

2. 进入解压完成的文件夹中,找到 scrt_sfx833-x64.exe 安装程序,双击文件进行安装 

接下来就进入了安装的环节: 

SecureCRT的安装

  • 双击应用会进入当前界面,点击Next继续;

  • 安装许可协议,先选中“I accept the…”,然后点击“Next”;

  • 继续点击Common profile(…),然后点击"Next";

  •  接下来点击 “Custom”(自定义安装),然后点击"Next"。

  • 接下来来到自定义设置界面,默认会安装SercureCRT和SercureFx两个软件,不用选,如果不需要改变安装路径,可以直接点击 “Next” 进入下一步,我是改变了安装目录,如果需要改变,点击Install to: 右边的 " Change… “,选择自己想要安装的目录,点击” OK " ,然后点击 " Next "。

  • 接下来默认勾选就可以,直接点击" Next " ;

  • 接下来点击 " Install " 安装软件;

  • 然后静静等侯安装完成,接下来直接点击 " Finish " 完成安装;

  • 这时候桌面会显示两个图标,证明安装已经完成。

SecureCRT的使用教程

SecureCRT 是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件,优点是可以一次创建多个 Tab Page,连接多台远程主机。

SecureFX 是用来安全的传输文件,它的优点在于可视化界面,将本地主机和远程主机的目录结构以树形结构的方式显示出来。文件的传输可以直接手动拖动而无需使用命令。

打开以后进入主界面 先点击 Connect,然后点击 Quick Connect,快速建立新的连接。选择示意的参考下图:

接下来默认登录模式是SSH2,根据自己需求选择,然后填写你自己虚拟机的IP Hostname和登录的用户名 Username ,我的虚拟机是密码登录,所以我选择 Password ,然后点击 Connect 连接:

接下来根据图示填写自己的服务器或者虚拟机的登录密码 ,点击OK,确定连接。 

接下来你就成功登录上了你的虚拟机或者服务器了,哈哈,放开你的双手任意的卖弄你的命令吧! 

SecureFX使用教程

接下来到SecureFX的使用了,它有两种打开方式:

1、如果你已经打开了SecureCRT的,可以用下图方式打开:

2、如果你没有打开SecureCRT,就双击桌面上安装好 SecureFX 应用图标打开应用。

打开SerureFX后,因为你登录过SecureCRT他会保存你的IP,你会在Sessions中直接看到你的IP,选中点击 Connect 直接连接:

如没有登录过SecureCRT的用户,打开应用会自己弹出来下图窗口默认登录模式是SFTP,根据自己需求选择,然后填写你自己虚拟机的IP Hostname和登录的用户名 Username ,我的虚拟机是密码登录,所以我选择 Password ,然后点击 Connect 连接 。没有窗口,请先点击 Connect,然后点击 Quick Connect,快速建立新的连接。详细看下图:

✳️无弹窗

✳️有弹窗

连接成功后,进入管理页面,可直接手动拖动文件。如下图:

文件传输成功后,显示Finished。可支持断点续传:

解决 SecureCRT 和 SecureFX 中文乱码

下载的 SecureCRT 和 SecureFX 安装打开后连接了自己的服务器或虚拟机后会出现中文乱码,每次都要给一一回复,我倒没事,主要是有时候因为工作的原因,所以没能及时的给小伙伴们回复消息,很是歉意,今天我也就把如何解决的办法,写出来,方便大家以后碰到了,能及时查看文章快速的解决乱码!方便使用!

接下来我们就来好好物色物色是如何解决乱码的!

解决 SecureCRT 中文乱码

打开 SecureCRT 并连接会话,也就是连接一个虚拟机或服务器!不然无法点击上栏选项的 Session Options...

连接会话后 点击上栏 Option ➡️ 点击 Session Options... ➡️ 点击 Terminal ➡️ 点击 Appearance ➡️ 选择下拉框 Character encoding 编码为 UTF-8 ➡️ 点击 OK 确定

最后关闭会话,重启 SecureCRT ,即可解决乱码问题。

解决 SecureFX 中文乱码

SecureFX 用于文件传输, 但是对于中文的文件(夹)却总是显示乱码,所以也是需要设置的!

乱码的时候就是这样的,其实这是中文的文件和文件夹,但是这里看到的是要不就是火星文要不就是 ???? 全是问号。

解决办法如下:

同SecureCRT设置,一样首先先确认字符编码被设置为 UTF-8。

同样打开 SecureFX 并连接会话,也就是连接一个虚拟机或服务器!不然无法点击上栏选项的 Session Options...

连接会话后 点击上栏 Option ➡️ 点击 Session Options... ➡️ 点击 Terminal ➡️ 点击 Appearance ➡️ 选择下拉框 Character encoding 编码为 UTF-8 ➡️ 点击 OK 确定。

最后关闭会话,重启 SecureFX , 重新连接会话查看 中文文件(夹)是否还显示乱码,如未解决,请接着往下看,如已解决,想看的那我也不拦着。

如果设置了编码后,重新打开连接还显示乱码,就得修改配置文件了。

修改配置文件 点击 上栏 Option ➡️ 点击 Global Options... ➡️ 点击 General ➡️ 点击 Configuration Paths

此时可以看到配置文件的路径,这时候直接复制路径搜索路径,打开所在路径的文件夹,进入其中的 Sessions 文件夹, 找到对应服务器或虚拟机的 ip.ini 文件然后打开,搜索配置项 Filenames Always Use UTF8 将 00000000 改为 00000001 ,保存退出。

D:"Filenames Always Use UTF8"=00000001

最后,重启SecureFX 重新连接会话查看中文文件(夹)已经完美正常显示了!

二、WinSCP

如果说XManager通过Xshell、Xftp可以很方便的进行远程管理,那么PuTTY显然不能满足我们的需求,所以这也是今天要介绍的另外一个工具-WinSCP。

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。

特性

◆ 图形用户界面

◆ 多语言

◆ 与Windows完美集成(拖拽, URL,快捷方式)

◆ 支持所有常用文件操作

◆ 支持基于SSH-1、SSH-2的SFTP和SCP协议[3]

◆ 支持批处理脚本和命令行方式

◆ 多种半自动、自动的目录同步方式

◆ 内置文本编辑器

◆ 支持SSH密码、键盘交互、公钥和Kerberos(GSS) 验证

◆ 通过与Pageant(PuTTY Agent)集成支持各种类型公钥验证

◆ 提供Windows Explorer与Norton Commander界面

◆ 可选地存储会话信息

◆ 可将设置存在配置文件中而非注册表中,适合在移动介质上操作

安装步骤

1、下载WinSCP 5.7(网上有大量的资源,可自行下载)

双击”WinSCP “进行安装,选择”简体中文”。

2、然后点击下一步,选择”我接受”。

3、这里选择”自定义安装”。

一般安装软件我都会选择自定义,因为默认的安装路径一般都会在不好找到的地方(大部分是在C:/Program Files下,会影响电脑运行速度,而且还原系统装过的软件就会毫无踪影)。

4、选择安装组件,这里默认即可。

5、选择额外任务,这里根据个人喜好来选择(我选择默认)。

6、初始化用户设置选择”用户界面风格”。

7、准备安装,确认检查设置(可通过”上一步”进行修改)。

8、然后开始,安装完成。

使用

1、双击运行WinSCP,然后进行设置。

  1. 文件协议选择默认”SFTP”即可
  2. 填写主机名(这里举例:192.168.1.10)
  3. 填写端口号(一般默认22即可)
  4. 填写用户名、密码
  5. 点击”登录”(也可选”保存”,保存连接后方便以后使用)

2、选择”是”,信任该主机,并把主机秘钥加入缓存。

3、OK,大功告成!

三、Xshell

Xshell6下载:

百度网盘 请输入提取码

提取码:t3ak

首先我们要知道Xshell是用来干什么的。Xshell其实就是一个远程终端工具,它可以将你的个人pc(个人电脑)和你在远端的机器连接起来,通过向Xshell输入命令然后他通过网络将命令传送给远端Linux机器然后远端的Linux机器将其运行结果通过网络传回个人电脑。我们可以通过一张图来更好的理解这一过程和功能。

 xshell安装,一直下一步即可。

xshell要求强制更新

今天打开xftp,发现不让用了,要继续使用此程序,您必须应用最新的更新或使用新版本,必须强制升级,网上找到了xshell5去除强制升级的方法,但是把原文分享的文件替换,却打不开了,应该是xshell5 和sehll6 不兼容导致的。

按照反编译操作,发现能解决问题,下面将步骤和文件放出。原理是反编译文件,修改其中某个16进制再替换原文件:

1. 找到安装目录的 `nslicense.dll`文件复制出来
2. 下载c32asm
3. 用c32asm以16进制形式打开nslicense
4. 搜索16进制: 7F0C81F98033E1010F8680
5. 替换成 	: 7F0C81F98033E1010F8380
6. 也就是将最后两位86替换成83 然后保存,并替换文件
7. 如果搜不到7F0C81F98033E1010F8680 可以缩短几位进行搜索 比如搜索7F0C81F98033E101试试看

这是xshll5的做法,xshell6有点变化,但只要找到对应位置的86改成83即可,亲测可用
下面放出我用的修改好的文件,可以替换到xshll安装目录 和 xftp的安装目录,或者自己按照上面方法进行修改。

百度网盘 请输入提取码

提取码:431e

xshell连接服务器

准备工作做好之后我们就可以打开Xshell进行我们的连接了。

点击新建按钮:

使用Xsheel 新建回话,输入ip:

输入服务器账号密码:

点击连接后出现这个问题不要怕,点击保存就行:

然后我们点击确定就创建好了一个新的会话窗口:

桥接方式Xshell无法连接到虚拟机Linux系统

 1.  查看本机所用网卡名称(适用于win10系统)

操作步骤:

1)  状态栏右键“WiFi连接图标”;

2)  点击“打开“网络和Internet”设置”;

3)  点击“更改适配器选项”;

4)  查看你的电脑正在用的网卡;

我是用的WiFi连接网络,网卡是Qualcomm Atheros AR956x Wireless Network Adapter,不同的电脑型号网卡应该都不一样,你稍微记住一下,有助于下面步骤。

2.  查看本机IP地址、子网掩码、默认网关、DNS 

操作步骤:

1)  进入Windows命令行(快捷键win + R);

2)  输入cmd,回车;

3)  输入ipconfig;

4)  查看你的电脑所在用的网卡IP地址信息;

我电脑使用的是WiFi上网,网卡是Qualcomm Atheros AR956x Wireless Network。

IP地址:192.168.0.103

子网掩码:255.255.255.0

默认网关:192.168.0.1

DNS服务器:202.96.128.86(首选地址) 202.96.134.33(备用地址)

需要注意的地方:这四个值一定要记住,后面进行Linux网络配置需要用到。

3. 查看虚拟机VMware上Linux系统网络设置

确认你的虚拟机网络适配器是否为桥接方式:

4. 配置Linux网络设置

修改网络配置文件(直接编辑配置文件方式)

操作步骤:

1)  启动Linux系统

2)  输入vi /etc/sysconfig/network-scripts/ifcfg-eth0(最后一个为数字0)

3)  按下i或者insert键,修改该配置文件,如下图:

红色框里面的内容为所需要更改的地方,等于号=右边的值有没有双引号都可以哦!

特别注意BOOTPROTO参数需要设置为static,其值代表将本系统IP设置为静态IP地址,也就是IP地址配置以后是固定的,设置为其他值none或dhcp(动态),xshell连接IPADDR所设置的IP是连接不上的,因为IP地址不是固定不变的,所以一定要设置为static。另外除了IP地址(IPADDR)最后一位和主机不一样,其他三项子网掩码(NETMASK)、网关(GATEWAY)、DNS必须和主机保持一致。

4)  按esc键退出编辑模式,然后按英文冒号:并接着输入小写字母wq

5. 将Linux网络服务重新启动,使得配置生效

输入service network restart命令即可:

NAT方式Xshell无法连接到虚拟机Linux系统

当虚拟机网络连接使用NAT模式时,因为共用宿主机ip所以当使用Xshell时直接填写虚拟机的ip地址和22端口是无法连接虚拟机的。

这样就需要配置端口映射关系!

1. 打开虚拟网络编辑器

2. 点击更改设置

选择VMnet8点击NAT设置:

3. 点击添加

 

4. 主机端口号设在1024~65535之间,我选在2345端口,虚拟机地址就是虚拟机centos的IPv4地址,虚拟机的ssh默认端口是22

5. 一路点击确定直到退出设置页面

6. 有时需要设置本地Internet连接共享

控制面板-网络和共享中心 或者 网络图标右键-属性;

然后点击左侧 更改适配器设置:

右键点击 本地连接-属性-共享:

最后一路 确定 退出设置,重启虚拟机,联网试试吧。

Xshell无法连接到Kali Linux系统

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。简单的说,SSH就是一种网络协议,用于加密的远程登录。

1. Kali linux 的ssh服务配置,打开终端,输入以下命令,打开ssh的配置文件

在这里也可以使用这个命令打开vi /etc/ssh/sshd_config

打开这个文件之后:

(1)将#PasswordAuthentication no的注释去掉,并且将NO修改为YES //kali中默认是yes;

(2)将PermitRootLogin without-password修改为PermitRootLogin yes;

(3)然后,保存,退出vim。

2. 启动SSH服务并查看状态

(1)使用/etc/init.d/ssh start

或者

service ssh start   启动ssh服务

(2)查看ssh服务状态是否正常运行

使用/etc/init.d/ssh status

或者

service  ssh  status

(3)查看实战情况,如下图:

3. 设置系统自动启动ssh服务

(1)方法一:

ysv-rc-conf
sysv-rc-conf --list | grep ssh
sysv-rc-conf ssh on  //系统自动启动SSH服务
sysv-rc-conf ssh off  // 关闭系统自动启动SSH服务

(2)方法二:

update-rc.d ssh enable  //系统自动启动SSH服务
update-rc.d ssh disabled // 关闭系统自动启动SSH服务

Xshell使用X11转发功能

X11转发是TCP/IP端口转发服务的特殊情况,X11协议有PC X Server(服务端)软件使用,从远程服务器连接到本地PC,与电子邮件或telnet等其他客户端程序相反。通过使用X11转发,你可以跳过设置运行X Server(服务端)软件所需的复杂端口转发规则。

X11- forwarding是一个安全的shell特性,它允许通过现有的SSH shell会话转发X11连接,用于在服务器上运行X11程序,而ssh-client通过用户的X11-server显示图形窗口。

Secure Shell (SSH)是一种加密协议,可以在不安全的网络上安全地传输数据。虽然SSH (Secure Shell)允许用户在客户机上远程连接服务器,但是这种Shell访问只允许用户和服务器应用程序之间基于文本的交互。

然而,X11是一个允许服务器应用程序显示图形界面的系统(本质上是基于像素的输出,显示自己的窗口)。这是一个长期建立的协议,但它传输数据没有加密。

X11-forwarding允许通过已经建立和加密的SSH连接安全地运行X11程序。

步骤1:在Xshell中配置X11转发

1、在【文件】菜单上,点击【打开】。将显示【会话】对话框。

2、单击要在其中配置速到服务器的会话。

3、点击工具栏上的【属性】按钮。将显示属性对话框。点击【隧道】分类菜单。

4、在【X11转移】部分中,选中【转发X11连接到】。

5、如果您的系统中安装了XManager,请选择Xmanager。

6、如果使用其他PC X Server,请选择X DISPLAY并输入正确的显示名称。

7、点击【确定】保存修改。

步骤2:在SSH服务器中配置X11转发服务

在下表中设置配置文件。

现在,你已经准备好通过SSH隧道在SSH Shell命令行下安全的执行远程X11应用程序了。

步骤3:在Xshell终端运行X应用程序

1、如果你的PC上安装了Xmanager,请转到下一步。否则,首先运行PC上安装的PC X服务器。

2、使用你配置的会话建立SSH连接。

3、在Xshell的shell提示符下,执行如下的X11应用程序:

[root@izj6c7ehbr4ubhi89pau46z ~]# xterm &

"Failed to excute Xmanager: Make sure that XManager is currently installed in this system." 错误

会话配置了将X11连接转发到Xmanager,但系统中找不到Xmanager。要使用Xmanager,请下载并安装Xmanager,并再次运行X11应用程序。要使用其他PC X Server,请打开【属性】对话框,然后转到【X11隧道】部分,然后,选择X DISPLAY并输入正确的X显示名称。

"The remote SSH server rejected an X11 forwarding request.”

请确保远程SSH服务器的X11转发功能开启了。

对于OpenSSH服务器:在文件/etc/ssh/sshd_config中,设置X11Forwarding yes。

对于SSH.COM服务器:在文件/etc/ssh2/sshd2_config中,设置AllowX11Forwarding yes。

Xshell使用技巧

1. 复制和粘贴

由于在linux的Shell下,Ctrl+c是中断当前指令,这个快捷键和win系统下的复制快捷键冲突,在Xshell中,提供了其它的快捷键来执行这些操作:

复制:Ctrl+Insert
粘贴:Shift+Insert

2. 将当前Shell中的内容复制到"记事本"中

有时候需要把shell中的一些内容临时复制到"记事本"中,如果再打开一个记事本,再复制粘贴就显得麻烦了。

Xshell中内置了这一功能,使用很简单,就是选中内容,鼠标右键,选择"To Notepad",再选中'Select Area'或者'All'或者'Screen',前者将把前面整个屏幕的输出复制到记事本中,而后者只会将当前可见的部分复制。

3. 快速选择当前行

这个很简单,就是在shell界面下快速点三次鼠标就选中当前行了,这样就可以用上面的复制功能将其复制到剪贴板中。

4. 快速打开Sessions对话框

有时候打开XShell后希望能直接打开Sessions对话框,这时候只要在Shell界面的(要打开'Address Bar'选项)的地址栏 里中输入'open'即可。或直接使用'Alt+O'即可打开上次打开的Sessions所在目录的对话框。

5. 迁移连接信息

在XShel中,每个保存的Session连接信息都是保存到.xsh(就是ini文件,可以用文本编辑器打开)文件中的。它的默认路径是:

"%APPDATA%\NetSarang\Xshell\Sessions"

即:

C:\Users\用户名\AppData\Roaming\NetSarang\Xshell\Sessions

可直接拷贝这些xsh文件到新的xshell的相同目录即可使用。

6. 最小化到系统托盘

XShell默认最小化是不会到系统托盘的,但是有个选项可以修改,设置在:Tools->Options->Advanced->'Minimize to system tray'打钩即可,尽管这并不是很实用。

7. 退出时关闭确认对话框

选择在这:Tools->Options->Advanced->'Confirm connection close when session exits'。

还有一个:Tools->Options->Advanced->'Confirm connection close when XShell exits'。

8. 快速切换打开的Tab

快捷键:Alt+1~9 或者Ctrl+Tab 或者Shift+Tab。

设置:Tools->Options->'Menu & Short Keys'。

9. 数字小键盘输入

如果不设置的话,输入数字小键盘,会显示乱码。

属性页面'Properties'->Terminal->'Initial VT Modes'->'Set as normal'选择即可。

10. 自定义文字颜色

如图设置,就可以得到多种颜色的文字字体。 

11. 设置命令快捷按钮

当你管理操作多个ssh主机时,不得不重复输入相同的命令,xshell可以设置快捷按钮,一键输入你设置的命令。

最大的用处就是让你少敲一些复杂但是很常用的命令或者一些难记的密码,当你需要在多个用户来回切换或者登陆mysql的时候,总之一切需要密码的地方,都能给你带来极大的便利。

Tools->'Quick Command Sets...'
在将其添加好后,将'View'->'Quick Commands'选项打开,这样在xshell的底部就有它们的标签,点击它后将会在终端里执行。

这里加一个别名为'nsl'的命令执行:

将命令发送到多个ssh会话终端:

也就是发送同一命令到已经登陆的多个主机,回车会将自动执行。这样就省去了重复键入的工作,提高了操作效率,但前者是要知道在做什么。

打开相应的功能:选择View->'Compose Bar',这样在xshell的底部会有一个输入框,可以在其中录入想要执行的命令及其参数;最左端的小箭头点开后还可以设置将框内的指令发送到到当前xshell所有的会话(To All Sessions)还是所有的xshell(To All Xshell),默认为当前所有会话,当前你也可以只针对当前这一个会话(To Current Session),仅为调试所用。

注意:xshell可以开启多个实例,一个实例又可以开启多个tab会话。

12. 上传下载

在主机里安装rz、sz,就可以直接上传下载文件,不用sftp或者其他上传下载工具了。这对于下载上传小型文件非常方便。

通过apt来安装:

apt-get install lrzsz

用法:

# sz 文件名

即可下载文件到本地。

# rz

就会跳出窗口让你选择上传的文件,然后上传。

另:和Xftp一起使用,点一下下图中的图标就回自动启动Xftp并连接上服务器,不管是上传还是下载东西都比较方便。虽然SecureCRT有SFTP可以用,但是要指定上传和下载的目录,不如图形界面方便。

上传和下载小的文件可以用上述的rz和sz命令,但是要提前安装。

13. 右键粘贴选用的文字

工具->选项->键盘和鼠标

选择完成之后,就能实现鼠标左键选中的字符自动复制到剪切板,右键自动粘贴。

14. 设置xshell使用代理

一些服务器访问受限的问题:某些服务器只有私网ip地址,仅能通过内网ip连接,或如mysql服务器或登录其它机器的ssh。

这些问题当然许多解决办法,本文就使用'xshell'通过ssh开启代理的方式来解决这个问题,恻重介绍其内置的三种方式:

1 Local(Outgoing)
2 Remote(Incoming)
3 Dynamic(SOCKS4/5)

如何打开代理设置面板。

点击:view -> Tunneling Pane,在弹出的窗口选择Forwarding Rules。

Alt+p:'Connection->SSH->Tunneling'。

从'Add...'按钮或右键菜单即可添加。

1、Local

把远程服务器到本机的端口映射。多于访问那些侦听的回环地址的服务,或位于防火墙后面,或没有公网ip的服务。

Type选择"Local(Outgoing)",'Source Host'使用默认的'localhost','Listen Port'添上mysql的端口3306;

'Destination Host'使用默认的localhost,'Destination Port'添上3306;

Descripting根据自己需要进行描述,可以留空。配置完成后点击'OK'会弹出一个对话框,点击是的话会对当前会话进行保存,以后每次连接此ssh会话,开启此端口转发,可自行决定是否保存。

添加完成后在'Forwarding Rules'对话框可以看到框中有一行转发配置,确保Status的状态是'Open',如果显示的是'Failed'可能是3306这个本地端口已经被占用了,可以尝试将'Listen Port'修改为其它端口进行重新设置。

至此,xshell已经将服务器的3306端口映射到本地3306端口,可以通过工具进行测试。只需要连接'localhost'或'127.0.0.1'(或本机的其它ip)的3306端口即可连上mysql,默认能访问到本机的所有ip的机器(同一局域网)及端口(本机防火墙已关闭的情况下)就能访问远程的mysql服务器;如果仅让本机可连,可将'Accept local connections only'这样的选项勾上,这样更安全一些(这种仅能从本机连接的方式同样适用于其它两种模式,下面不做多述)。

在Type选择"Local(Outgoing)"的时候,'Source Host'表示使用的本地ip地址,可以是localhost也可以是本地内网ip或者公网ip,使用相应的ip便可以被本地网络的用户访问到,比如上例中,如果需要同ip段的同事访问3306的端口管理服务器,便可以设置成他可以访问到的那个ip地址。

'Destination Host'表示服务器端的ip地址,可以是服务器本地的地址localhost或者是服务器可以访问到的一个ip地址,例如服务器同机房的某个ip,或者服务器可以连接公网的话,可以是公网上某台服务器的ip地址。

二、Remote

'Local'用于把服务器上的服务映射到本机的某端口上,'Remote'则相反,它将本地的端口映射到服务器的某一端口上,在服务器上访问该端口,实际是访问本机的服务。与此类似的是:防火墙的端口映射模式,与之不同的是:前者是在公司防火墙上开了一个洞,是合法的操作;后者是凿了一个洞,是非法操作,无须经过网管人员。后者可能为公司企业带来泄密的风险,尤其是做了到ssh端口映射,就可从外部服务器上就可访问公司整个内部网络!

'Source Host'为远程服务器的地址,默认为'localhost',当然也可以那台主机上的其它ip地址,为了安全起见,ssh仅会侦听回环(127.0.0.1)地址,即使填写的是公网地址也是如此。'Listen Port'为指定在公网服上侦听的端口,注意不要与其它已经在用的端口相冲突。'Destination Host'这个为公司内网地址,这个地址的端口上运行着你想访问的服务,当然也可以只映射到本机上的某一端口。

因此这种方式也叫做"反向代理"。

示例:让公网上的服务器访问局域网里的某台机器的的服务

访问另外一台机器(192.168.18.100)上的web服务

通过ssh登录内部一台机器的ssh,这样远程的机器就能控制内部这台机器了,如果能登录成功的话,还可以从它跳转登录到局域网其它机器。

在linux下,可以借助于'autossh'这款工具来实现。

三、Dynamic

即socket代理,用于给本地开启代理端口,只要程序支持Socket连接方式,如浏览器通过本端口代理上网。

在弹出的'Forwarding Rule',按照如图所示进行配置,Type选择"Dynamic(SOCK54/5";'Listen Port'默认使用1080,这里也可以按照自己需求进进行端口设置;Descripting根据自己需要进行描述,可以留空,配置后点击OK会弹出一个对话框,点击是的话会对当前会话进行保存,以后每次连接此ssh会话,本地socket代理会自动打开。

添加完成后在'Forwarding Rules'对话框可以看到的一行转发配置,确保Status的状态是"Open",如果显示的是"Failed"可能是1080这个本地端口已经被占用了,可以尝试修改代理端口为其它端口进行重新设置。

至此,代理服务器设置已经完成了,下面将进行浏览器客户端的配置。

打开Internet选项,点击“连接”选项卡,在这个页面点击“局域网设置”,弹出“局域网(LAN)设置”。

在代理服务器下面勾选“为LAN使用代理服务器”,地址和端口全部留空,点击“高级”,进入“代理服务器设置”端口。在套接字一行,代理服务器地址写"localhost",端口写"1080",然后依次点击确定,回到浏览器页面就可以通过代理进行上网了。

可以访问 ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名 来看一下出来的ip地址是否有变化。

如果想给本地其它电脑做代理,可以给其它电脑做类似设置,但是地址需要写和对方进行通信的内网ip地址而不是socket了。这个方法主要针对那些你不能打开的网页,比如公司在出口路由上对影响工作的网站或应用进行了屏避,或逃过公司做你上网记录的收集(交换机端口镜像),这个方法就非常好用了,其实我经常用后者来对我的隐私做最大的保护。

除了为本地的机器开启上网浏览服务外,还可以用来解决文章前面所提及的直接登录外部机房里只有私有ip的机器,这样你就不用先登录有公网ip的机器,然后在那台机器里用ssh再登录内网机器了。

操作方法如下:
host_a:你在公司的pc,装有xshell
host_b:外网服务器,其上有公网ip和私网ip
host_c:外网服务器,其上仅有私网ip

这里要知道:host_b与host_c它们是位于机房中的局域网内,它们之间的通信只能通过私网进行,数据包不会出公网。且host_a与'host_b,host_c'的私网是完全独立的,没有任何关系。

现在从host_a使用xshell连接host_b,并开启Socket代理,端口为'1080',建立好连接后,打开'cmd'容器,使用指令'netstat -na|more'看下应该有'1080'端口处于侦听(LISTENING)状态。同是不要断开连接,因为host_a发住host_c的数据信息都要从这个端口到host_b,然后再由host_b转发至host_c。

建立到host_c的ssh连接,写好host_c的私网ip地址(不是host_b的),用户名及密码,做好后先不要连接(实际也连接不上),在设置好其代理后才可继续连接。

在'Connection'->'Proxy Server'页中,如果没有添加host_b的代理名称及信息话,点击'Browse...'按纽。

 

添加一个已经建立起连接的名称,这里为'nhk3','host'一般为'127.0.0.1'的地址(如果有公司内有专用的代理机的话,则填入那台机器的ip地址),端口为刚才使用的端口。

选择适用的'Proxy Server'为'nhk3',确定后即可开始连接。要终端窗口里会打印出通过'Proxy'连接的信息:

Connecting to proxy server(127.0.0.1:1080)...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Fri Apr 19 15:41:06 2013 from 192.168.x.x

这里的'192.168.x.x'即是'host_b'的私网ip。

四、MobaXtrem

官方网址:

 MobaXterm free Xserver and tabbed SSH client for Windows

有家庭版和专业版两个版本,免费版本就可以完成日常的登录和文件上传功能。但是只支持 windows 系统。

你可以通过他便可以完成所有基础的上传和命令行操作功能:

你可以通过创建新的会话来建立新的 SSH 连接:

同时你也可以检测当前服务器的状态。

五、finalShell

fianlShell 的官网:

 SSH工具 SSH客户端

特点和推荐的MobaXterm基本差不多。

不过刚上手可能不太知道如何建立连接:

上图便是简单的开启建立连接的方式。但是连接的类型便不如 MobaXterm 丰富,除此之外,该版本建立连接时还会占用服务器大约150M 的内存,可谓比较头疼的一件事,但是好在 windows ,mac,linux 系统都能使用。

六、putty

PuTTY是一个串行接口连接软件,多用于远程登录控制功能。PuTTY现在已从Windows系统版本发展到多系统通用版本,并且还能在某些手机上使用,让用户在连接串口时更加方便。

Putty设置中文方法

1、打开Putty,点击“Window”下的“Appearance”选项,点击“Font settings”后的“Change”按钮。这样会打开字体设置窗口,选择一款中文字体,然后在下方“脚本”栏中选择“中文_GB2312”。

2、然后切换至“Window”下的“Translation”选项,打开"Remote character set"的选择框,在下拉菜单中选中"Use font encoding",之后在按照常规方式建立连接即可。

 

PuTTy的使用方法

开putty,进入putty的信息配置页面:

1、打开Putty,在“Session”标签下,对“Host Name (or IP address)”的输入框中输入想要访问的主机名或IP地址,比如server1或192.168.9.4。端口号(Port)会依据下方选择的协议有所区别,用户需要根据服务器来进行选择。

2、在“Saved Session”的输入栏中输入将要创建的任务名,然后点击后方的“Save”按钮,就能将任务保存下来。

3、确保以上配置无误后,点击下方的“Open”按钮,即可通过Putty连接主机。

 

七、SCP命令

scp 命令是用于通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令。使用 SSH 意味着它享有与 SSH 相同级别的数据加密,因此被认为是跨两个远程主机传输文件的安全方式。

Linux SCP 命令是一种在两个远程节点之间传输文件的便捷且安全的方式,而无需担心攻击者窥探你的数据。

下面提供了 SCP 命令的基本语法:

$ scp [option] /path/to/source/file user@server-ip:/path/to/destination/directory

/path/to/source/file – 这是打算复制到远程主机的源文件。

user@server-IP: – 这是远程系统的用户名和 IP 地址。请注意 IP 地址后面加冒号。

/path/to/destination/directory – 这是文件将复制到的远程系统上的目标目录。

以下是scp命令常用的几个选项:

-C - 这会在复制过程中压缩文件或目录。
-P - 如果默认 SSH 端口不是 22,则使用此选项指定 SSH 端口。
-r - 此选项递归复制目录及其内容。
-p - 保留文件的访问和修改时间。

将文件复制到远程 Linux 服务器

在下面的示例中,我将logs.tar.gz 复制到远程主机的/root目录下。远程主机IP为172.29.9.33,用户名为root。(本地主机ip为172.29.9.32)

1. scp传输文件

我们先用dd命令在本地生成一个大文件logs.tar.gz用于测试:

[root@k8s-node1 ~]#dd if=/dev/zero of=logs.tar.gz bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 4.53084 s, 231 MB/s
[root@k8s-node1 ~]#ll -h logs.tar.gz 
-rw-r--r-- 1 root root 1000M Feb 26 10:02 logs.tar.gz

开始使用scp命令将文件复制到远程 Linux 服务器:

[root@k8s-node1 ~]#scp logs.tar.gz [email protected]:/root/
The authenticity of host '172.29.9.33 (172.29.9.33)' can't be established.
ECDSA key fingerprint is SHA256:XfMhwZeoqC6kPHaF1uPzLdY9t2ZgNoNvyEd0kJd24eY.
ECDSA key fingerprint is MD5:ec:5e:37:9d:fc:e7:af:e1:9e:3a:ac:21:81:92:b5:91.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.29.9.33' (ECDSA) to the list of known hosts.
[email protected]'s password: 
logs.tar.gz                                                                                         100% 1000MB  50.9MB/s   00:19    

到远程主机查看传输过去的文件是否存在:

[root@k8s-node2 ~]#ll -h logs.tar.gz #可以看到,传输过去的文件存在
-rw-r--r-- 1 root root 1000M Feb 26 10:05 logs.tar.gz

2. 如果要复制目录,请使用-r选项

如果要复制目录,请使用-r选项,如下所示。在这里,我们将 /root/tmp目录复制到远程节点的/root目录中。

#传输目录到远程机器
[root@k8s-node1 ~]#scp -r /tmp/ [email protected]:/root/
[email protected]'s password: 

#在远程机器上验证
[root@k8s-node2 ~]#ls tmp/ #被传输过来的目录存在
vmware-root_5586-3133158215  vmware-root_5593-4155813653

如果不添加-r选项复制目录,会提示如下错误。

[root@k8s-node1 ~]#scp  /tmp/ [email protected]:/root/
[email protected]'s password: 
/tmp: not a regular file

3. 如果远程主机端口不是22的话,要用-p参数

#传输文件
[root@k8s-node1 ~]#scp wget-1.14-18.el7_6.1.x86_64.rpm [email protected]:/tmp
ssh: connect to host 172.29.9.33 port 22: Connection refused
lost connection
[root@k8s-node1 ~]#scp -P 5151 wget-1.14-18.el7_6.1.x86_64.rpm [email protected]:/tmp
[email protected]'s password: 
wget-1.14-18.el7_6.1.x86_64.rpm                                                                     100%  547KB  29.6MB/s   00:00 

#验证
[root@k8s-node2 ~]#ll /tmp/wget-1.14-18.el7_6.1.x86_64.rpm 
-rw-r--r-- 1 root root 560272 Feb 26 10:12 /tmp/wget-1.14-18.el7_6.1.x86_64.rpm

将文件从远程系统复制到本地系统

可以将文件从远程节点复制到本地系统,如下所示:

$ scp [option] user@server-ip:/path/to/source/file /path/to/local/directory

1. scp传输文件

在下面的示例中,我们将文件 /root/passwd从远程系统复制到本地系统:

#传输
[root@k8s-node1 ~]#scp -P 5151 [email protected]:/etc/passwd /root/
[email protected]'s password: 
passwd                                                                                              100% 1184   538.9KB/s   00:00   

#验证
[root@k8s-node1 ~]#ll passwd 
-rw-r--r-- 1 root root 1184 Feb 26 10:30 passwd

2. 如果要复制目录,请使用-r选项

同样,你可以使用-r标志将目录从远程主机复制到本地系统,如下所示:

#传输
[root@k8s-node1 ~]#scp -P 5151 -r  [email protected]:/tmp /root/
[email protected]'s password: 
wget-1.14-18.el7_6.1.x86_64.rpm                                                                     100%  547KB  24.9MB/s   00:00    

#验证
[root@k8s-node1 ~]#ls tmp/
vmware-root_5460-2864841600  vmware-root_5461-3845494878  wget-1.14-18.el7_6.1.x86_64.rpm

关使用 scp 命令的更多选项,可以查看手册,命令是:man scp.

额外补充:

rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具。优点就是不用再开一个sftp工具登录上去上传下载文件。

安装:

yum install lrzsz

从服务端发送文件到客户端:

sz filename

Usage: sz [options] file ...
   or: sz [options] -{c|i} COMMAND
Send file(s) with ZMODEM/YMODEM/XMODEM protocol
    (X) = option applies to XMODEM only
    (Y) = option applies to YMODEM only
    (Z) = option applies to ZMODEM only
  -+, --append                append to existing destination file (Z)
  -2, --twostop               use 2 stop bits
  -4, --try-4k                go up to 4K blocksize
      --start-4k              start with 4K blocksize (doesn't try 8)
  -8, --try-8k                go up to 8K blocksize
      --start-8k              start with 8K blocksize
  -a, --ascii                 ASCII transfer (change CR/LF to LF)
  -b, --binary                binary transfer
  -B, --bufsize N             buffer N bytes (N==auto: buffer whole file)
  -c, --command COMMAND       execute remote command COMMAND (Z)
  -C, --command-tries N       try N times to execute a command (Z)
  -d, --dot-to-slash          change '.' to '/' in pathnames (Y/Z)
      --delay-startup N       sleep N seconds before doing anything
  -e, --escape                escape all control characters (Z)
  -E, --rename                force receiver to rename files it already has
  -f, --full-path             send full pathname (Y/Z)
  -i, --immediate-command CMD send remote CMD, return immediately (Z)
  -h, --help                  print this usage message
  -k, --1k                    send 1024 byte packets (X)
  -L, --packetlen N           limit subpacket length to N bytes (Z)
  -l, --framelen N            limit frame length to N bytes (l>=L) (Z)
  -m, --min-bps N             stop transmission if BPS below N
  -M, --min-bps-time N          for at least N seconds (default: 120)
  -n, --newer                 send file if source newer (Z)
  -N, --newer-or-longer       send file if source newer or longer (Z)
  -o, --16-bit-crc            use 16 bit CRC instead of 32 bit CRC (Z)
  -O, --disable-timeouts      disable timeout code, wait forever
  -p, --protect               protect existing destination file (Z)
  -r, --resume                resume interrupted file transfer (Z)
  -R, --restricted            restricted, more secure mode
  -q, --quiet                 quiet (no progress reports)
  -s, --stop-at {HH:MM|+N}    stop transmission at HH:MM or in N seconds
      --tcp                   build a TCP connection to transmit files
      --tcp-server            open socket, wait for connection
  -u, --unlink                unlink file after transmission
  -U, --unrestrict            turn off restricted mode (if allowed to)
  -v, --verbose               be verbose, provide debugging information
  -w, --windowsize N          Window is N bytes (Z)
  -X, --xmodem                use XMODEM protocol
  -y, --overwrite             overwrite existing files
  -Y, --overwrite-or-skip     overwrite existing files, else skip
      --ymodem                use YMODEM protocol
  -Z, --zmodem                use ZMODEM protocol

从客户端上传文件到服务端:

rz [选项]

选项说明:
-+, --append:将文件内容追加到已存在的同名文件
-a,--ascii:以文本方式传输
-b, --binary:以二进制方式传输,推荐使用
--delay-startup N:等待N秒
-e, --escape:对所有控制字符转义,建议使用
-E, --rename:已存在同名文件则重命名新上传的文件,以点和数字作为后缀
-p, --protect:对ZMODEM协议有效,如果目标文件已存在则跳过 -
-q, --quiet:安静执行,不输出提示信息
-v, --verbose:输出传输过程中的提示信息
-y, --overwrite:存在同名文件则替换
-X, --xmodem:使用XMODEM协议
--ymodem:使用YMODEM协议
-Z, --zmodem:使用ZMODEM协议
--version:显示版本信息
--h, --help:显示帮助信息

八、wget命令

wget是一个Linux环境下用于从万维网上提取文件的工具,它支持HTTP和FTP协议,支持代理服务器功能,能够自动递归远程主机的目录,找到合乎条件的文件并将其下载到本地。wget可在后台运行,所以他可以批量下载文件。

基本语法:

wget [options] [url]

url的格式如下:

http://host[:port]/path

例如:

http://www.baidu/
ftp://a.b.c/

参数介绍

其实,对于wget学习而言,最重要的是要了解他的常用参数,以及他们所代表的含义,下面是一些常用参数的介绍。

指令启动相关

文件处理相关

wget -d http://127.0.0.1/index.php
//下载文件链接并显示下载信息
wget -q http://127.0.0.1
//下载文件链接但不显示下载信息
wget -i url.txt 
//下载url.txt文件中的所包含的url链接的所有文件0783

下载相关

目录

HTTP选项

FTP选项

使用递回方式的取回

wget命令总结:

1、下载单个文件:wget http://www.baidu.com。命令会直接在当前目录下载一个index.html的文件

2、将下载的文件存放到指定的文件夹下,同时重命名下载的文件,利用-O:wget -O /home/index http://www.baidu.com

3、下载多个文件:首先,创建一个file.txt文件,写入两个url(换行),如http://www.baidu.com;然后,wget -i file.txt;命令执行后会下载两个两个文件。

4、下载时,不显示详细信息,即在后台下载:wget -b http://www.baidu.com。命令执行后会,下载的详细信息不会显示在终端,会在当前目录下生成一个web-log记录下载的详细信息。

5、下载时,不显示详细信息,同时将下载信息保存到执行的文件中(同4):wget -o dw.txt http://www.baidu.com

6、断点续传:wget -c http://www.baidu.com

7、限制下载的的速度:wget --limit-rate=100k -O zfj.html http://www.baidu.com

8、测试是否能正常访问:wget --spider http://www.baidu.com

9、设置下载重试的次数:wget --tries=3 http://www.baidu.com

10、下载一个完整的网站,即当前页面所依赖的所有文件:wget --mirror -p --convert-links -P./test http://localhost

--mirror:打开镜像选项

-p:下载所有用于显示给定网址所必须的文件

--convert-links:下载以后,转换链接用于本地显示

-P LOCAL_DIR:保存所有的文件或目录到指定的目录下

11、下载的过程中拒绝下载指定类型的文件:wget --reject=png --mirror -p --convert-links -P./test http://localhost

12、多文件下载中拒绝下载超过设置大小的文件:wget -Q5m -i file.txt

注意:此选项只能在下载多个文件时有用,当你下载一个文件时没用。

13、从指定网站中下载所有指定类型的文件:wget -r -A .png http://www.baidu.com

14、wget下载时,某些资源必须使用--no-check-certificate http://www.baidu.com

15、使用wget实现FTP下载:wget --file-user=USERNAME --file-password=PASSWORD url

16、下载https链接文件错误:wget --no-check-certificate https://www.baidu.com/img/baidu.svg

有时 加上–no-check-certificate参数,一些网站还是无法下载,建议使用下面两种方法:

将wget升级至最新版:

​sudo yum -y install wget
wget https://www.baidu.com/img/baidu.svg

​

使用CURL:

curl -O https://www.baidu.com/img/baidu.svg

九、curl命令

curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出"(stdout)上面。它支持多种协议,下面列举其常用功能。

1、查看网页源码

直接在 curl 命令后加上网址,就可以看到网页源码。以网址 www.sina.com为例(选择该网址,主要因为它的网页代码较短)。

$ curl www.sina.com
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

如果要把这个网页保存下来,可以使用 -o 参数:

curl -o [文件名] www.sina.com

2、自动跳转

有的网址是自动跳转的。使用 -L 参数,curl 就会跳转到新的网址。

$ curl -L www.sina.com

键入上面的命令,结果自动跳转为 www.sina.com.cn

3、显示头信息

-i 参数可以显示 http response 的头信息,连同网页代码一起。-I 参数则只显示 http response 的头信息。

$ curl -i www.sina.com
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 23 Aug 2016 08:30:16 GMT
Content-Type: text/html
Location: http://www.sina.com.cn/
Expires: Tue, 23 Aug 2016 08:32:16 GMT
Cache-Control: max-age=120
Age: 102
Content-Length: 178
X-Cache: HIT from xd33-83.sina.com.cn

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

4、显示通信过程

-v 参数可以显示一次 http 通信的整个过程,包括端口连接和 http request 头信息。

$ curl -v www.sina.com
* Rebuilt URL to: www.sina.com/
* Hostname was NOT found in DNS cache
*   Trying 202.108.33.60...
* Connected to www.sina.com (202.108.33.60) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.sina.com
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
* Server nginx is not blacklisted
< Server: nginx
< Date: Tue, 23 Aug 2016 08:48:14 GMT
< Content-Type: text/html
< Location: http://www.sina.com.cn/
< Expires: Tue, 23 Aug 2016 08:50:14 GMT
< Cache-Control: max-age=120
< Age: 40
< Content-Length: 178
< X-Cache: HIT from xd33-81.sina.com.cn
< 
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host www.sina.com left intact

如果觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

$ curl --trace output.txt www.sina.com

或者:

$ curl --trace-ascii output.txt www.sina.com

5、发送表单信息

发送表单信息有 GET 和 POST 两种方法。GET 方法相对简单,只要把数据附在网址后面就行。

$ curl example.com/form.cgi?data=xxx

POST 方法必须把数据和网址分开,curl 就要用到 --data 或者 -d 参数。

$ curl -X POST --data "data=xxx" example.com/form.cgi
curl -H "Content-Type: application/json" -X POST -d "{\"abc\":123}" "https://httpbin.org/post"

json数据放在一个文件里:

curl -H "Content-Type: application/json" -X POST -d @test.json URL

如果你的数据没有经过表单编码,还可以让 curl 为你编码,参数是 --data-urlencode

$ curl -X POST--data-urlencode "date=April 1" example.com/form.cgi

6、HTTP动词

curl 默认的 HTTP 动词是 GET,使用 -X 参数可以支持其他动词。

$ curl -X POST www.example.com
$ curl -X DELETE www.example.com

7、User Agent字段

这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。

浏览器的 User Agent 是:

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36

curl 可以这样模拟:

$ curl --user-agent "[User Agent]" [URL]

8、cookie

使用 --cookie 参数,可以让 curl 发送 cookie。

$ curl --cookie "name=xxx" www.example.com

至于具体的 cookie 的值,可以从 http response 头信息的 Set-Cookie 字段中得到。

9、增加头信息

有时需要在 http request 之中,自行增加一个头信息。--header 参数就可以起到这个作用。

$ curl --header "Content-Type:application/json" http://example.com

10、HTTP认证

有些网域需要 HTTP 认证,这时 curl 需要用到 --user 或者 -u 参数。

$ curl --user name:password example.com

附录 curl 命令完整的参数:

$ curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
     --anyauth       Pick "any" authentication method (H)
 -a, --append        Append to target file when uploading (F/SFTP)
     --basic         Use HTTP Basic Authentication (H)
     --cacert FILE   CA certificate to verify peer against (SSL)
     --capath DIR    CA directory to verify peer against (SSL)
 -E, --cert CERT[:PASSWD] Client certificate file and password (SSL)
     --cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)
     --ciphers LIST  SSL ciphers to use (SSL)
     --compressed    Request compressed response (using deflate or gzip)
 -K, --config FILE   Specify which config file to read
     --connect-timeout SECONDS  Maximum time allowed for connection
 -C, --continue-at OFFSET  Resumed transfer offset
 -b, --cookie STRING/FILE  String or file to read cookies from (H)
 -c, --cookie-jar FILE  Write cookies to this file after operation (H)
     --create-dirs   Create necessary local directory hierarchy
     --crlf          Convert LF to CRLF in upload
     --crlfile FILE  Get a CRL list in PEM format from the given file
 -d, --data DATA     HTTP POST data (H)
     --data-ascii DATA  HTTP POST ASCII data (H)
     --data-binary DATA  HTTP POST binary data (H)
     --data-urlencode DATA  HTTP POST data url encoded (H)
     --delegation STRING GSS-API delegation permission
     --digest        Use HTTP Digest Authentication (H)
     --disable-eprt  Inhibit using EPRT or LPRT (F)
     --disable-epsv  Inhibit using EPSV (F)
     --dns-servers    DNS server addrs to use: 1.1.1.1;2.2.2.2
     --dns-interface  Interface to use for DNS requests
     --dns-ipv4-addr  IPv4 address to use for DNS requests, dot notation
     --dns-ipv6-addr  IPv6 address to use for DNS requests, dot notation
 -D, --dump-header FILE  Write the headers to this file
     --egd-file FILE  EGD socket path for random data (SSL)
     --engine ENGINE  Crypto engine (SSL). "--engine list" for list
 -f, --fail          Fail silently (no output at all) on HTTP errors (H)
 -F, --form CONTENT  Specify HTTP multipart POST data (H)
     --form-string STRING  Specify HTTP multipart POST data (H)
     --ftp-account DATA  Account data string (F)
     --ftp-alternative-to-user COMMAND  String to replace "USER [name]" (F)
     --ftp-create-dirs  Create the remote dirs if not present (F)
     --ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)
     --ftp-pasv      Use PASV/EPSV instead of PORT (F)
 -P, --ftp-port ADR  Use PORT with given address instead of PASV (F)
     --ftp-skip-pasv-ip Skip the IP address for PASV (F)
     --ftp-pret      Send PRET before PASV (for drftpd) (F)
     --ftp-ssl-ccc   Send CCC after authenticating (F)
     --ftp-ssl-ccc-mode ACTIVE/PASSIVE  Set CCC mode (F)
     --ftp-ssl-control Require SSL/TLS for ftp login, clear for transfer (F)
 -G, --get           Send the -d data with a HTTP GET (H)
 -g, --globoff       Disable URL sequences and ranges using {} and []
 -H, --header LINE   Custom header to pass to server (H)
 -I, --head          Show document info only
 -h, --help          This help text
     --hostpubmd5 MD5  Hex encoded MD5 string of the host public key. (SSH)
 -0, --http1.0       Use HTTP 1.0 (H)
     --http1.1       Use HTTP 1.1 (H)
     --http2.0       Use HTTP 2.0 (H)
     --ignore-content-length  Ignore the HTTP Content-Length header
 -i, --include       Include protocol headers in the output (H/F)
 -k, --insecure      Allow connections to SSL sites without certs (H)
     --interface INTERFACE  Specify network interface/address to use
 -4, --ipv4          Resolve name to IPv4 address
 -6, --ipv6          Resolve name to IPv6 address
 -j, --junk-session-cookies Ignore session cookies read from file (H)
     --keepalive-time SECONDS  Interval between keepalive probes
     --key KEY       Private key file name (SSL/SSH)
     --key-type TYPE Private key file type (DER/PEM/ENG) (SSL)
     --krb LEVEL     Enable Kerberos with specified security level (F)
     --libcurl FILE  Dump libcurl equivalent code of this command line
     --limit-rate RATE  Limit transfer speed to this rate
 -l, --list-only     List only mode (F/POP3)
     --local-port RANGE  Force use of these local port numbers
 -L, --location      Follow redirects (H)
     --location-trusted like --location and send auth to other hosts (H)
 -M, --manual        Display the full manual
     --mail-from FROM  Mail from this address (SMTP)
     --mail-rcpt TO  Mail to this/these addresses (SMTP)
     --mail-auth AUTH  Originator address of the original email (SMTP)
     --max-filesize BYTES  Maximum file size to download (H/F)
     --max-redirs NUM  Maximum number of redirects allowed (H)
 -m, --max-time SECONDS  Maximum time allowed for the transfer
     --metalink      Process given URLs as metalink XML file
     --negotiate     Use HTTP Negotiate Authentication (H)
 -n, --netrc         Must read .netrc for user name and password
     --netrc-optional Use either .netrc or URL; overrides -n
     --netrc-file FILE  Set up the netrc filename to use
 -N, --no-buffer     Disable buffering of the output stream
     --no-keepalive  Disable keepalive use on the connection
     --no-sessionid  Disable SSL session-ID reusing (SSL)
     --noproxy       List of hosts which do not use proxy
     --ntlm          Use HTTP NTLM authentication (H)
     --oauth2-bearer TOKEN  OAuth 2 Bearer Token (IMAP, POP3, SMTP)
 -o, --output FILE   Write output to <file> instead of stdout
     --pass PASS     Pass phrase for the private key (SSL/SSH)
     --post301       Do not switch to GET after following a 301 redirect (H)
     --post302       Do not switch to GET after following a 302 redirect (H)
     --post303       Do not switch to GET after following a 303 redirect (H)
 -#, --progress-bar  Display transfer progress as a progress bar
     --proto PROTOCOLS  Enable/disable specified protocols
     --proto-redir PROTOCOLS  Enable/disable specified protocols on redirect
 -x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port
     --proxy-anyauth Pick "any" proxy authentication method (H)
     --proxy-basic   Use Basic authentication on the proxy (H)
     --proxy-digest  Use Digest authentication on the proxy (H)
     --proxy-negotiate Use Negotiate authentication on the proxy (H)
     --proxy-ntlm    Use NTLM authentication on the proxy (H)
 -U, --proxy-user USER[:PASSWORD]  Proxy user and password
     --proxy1.0 HOST[:PORT]  Use HTTP/1.0 proxy on given port
 -p, --proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)
     --pubkey KEY    Public key file name (SSH)
 -Q, --quote CMD     Send command(s) to server before transfer (F/SFTP)
     --random-file FILE  File for reading random data from (SSL)
 -r, --range RANGE   Retrieve only the bytes within a range
     --raw           Do HTTP "raw", without any transfer decoding (H)
 -e, --referer       Referer URL (H)
 -J, --remote-header-name Use the header-provided filename (H)
 -O, --remote-name   Write output to a file named as the remote file
     --remote-name-all Use the remote file name for all URLs
 -R, --remote-time   Set the remote file's time on the local output
 -X, --request COMMAND  Specify request command to use
     --resolve HOST:PORT:ADDRESS  Force resolve of HOST:PORT to ADDRESS
     --retry NUM   Retry request NUM times if transient problems occur
     --retry-delay SECONDS When retrying, wait this many seconds between each
     --retry-max-time SECONDS  Retry only within this period
     --sasl-ir       Enable initial response in SASL authentication
 -S, --show-error    Show error. With -s, make curl show errors when they occur
 -s, --silent        Silent mode. Don't output anything
     --socks4 HOST[:PORT]  SOCKS4 proxy on given host + port
     --socks4a HOST[:PORT]  SOCKS4a proxy on given host + port
     --socks5 HOST[:PORT]  SOCKS5 proxy on given host + port
     --socks5-hostname HOST[:PORT] SOCKS5 proxy, pass host name to proxy
     --socks5-gssapi-service NAME  SOCKS5 proxy service name for gssapi
     --socks5-gssapi-nec  Compatibility with NEC SOCKS5 server
 -Y, --speed-limit RATE  Stop transfers below speed-limit for 'speed-time' secs
 -y, --speed-time SECONDS  Time for trig speed-limit abort. Defaults to 30
     --ssl           Try SSL/TLS (FTP, IMAP, POP3, SMTP)
     --ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)
 -2, --sslv2         Use SSLv2 (SSL)
 -3, --sslv3         Use SSLv3 (SSL)
     --ssl-allow-beast Allow security flaw to improve interop (SSL)
     --stderr FILE   Where to redirect stderr. - means stdout
     --tcp-nodelay   Use the TCP_NODELAY option
 -t, --telnet-option OPT=VAL  Set telnet option
     --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)
 -z, --time-cond TIME  Transfer based on a time condition
 -1, --tlsv1         Use TLSv1 (SSL)
     --trace FILE    Write a debug trace to the given file
     --trace-ascii FILE  Like --trace but without the hex output
     --trace-time    Add time stamps to trace/verbose output
     --tr-encoding   Request compressed transfer encoding (H)
 -T, --upload-file FILE  Transfer FILE to destination
     --url URL       URL to work with
 -B, --use-ascii     Use ASCII/text transfer
 -u, --user USER[:PASSWORD][;OPTIONS]  Server user, password and login options
     --tlsuser USER  TLS username
     --tlspassword STRING TLS password
     --tlsauthtype STRING  TLS authentication type (default SRP)
 -A, --user-agent STRING  User-Agent to send to server (H)
 -v, --verbose       Make the operation more talkative
 -V, --version       Show version number and quit
 -w, --write-out FORMAT  What to output after completion
     --xattr        Store metadata in extended file attributes
 -q                 If used as the first parameter disables .curlrc

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/126205373