
2.1 SSH工具与FTP工具
在C/C++开发中,我们大多数使用的开发机器是Windows和Mac机器,在程序开发完成后拿到专门的Linux机器上去编译和调试。公司内部通常不大可能给每个开发人员都分配一台 Linux 机器,而是准备一台配置较高的开发机器,给每个开发人员都分配一个Linux账号;或者干脆让员工自己安装虚拟机,并在虚拟机上安装Linux系统使用。
无论采用以上哪种方式,我们通常都不会直接登录Linux机器进行操作,而是通过一些支持SSH协议的工具远程连接到目标Linux机器上。目前常用的两大SSH工具分别是Xshell和SecureCRT,这两种工具的用法基本相似,这里以Xshell为例来说明。
2.1.1 Xshell
虽然Xshell是一款商业软件,但也提供了免费的个人使用版本(Free License for Home and School Users),在其官网可以找到下载链接。
进入个人免费版本,填写自己的姓名和邮箱后单击 DOWNLOAD 按钮,相应的邮箱就会收到一封含有下载Xshell免费版本链接的邮件。

下载并安装Xshell后,我们就可以使用Xshell连接到Linux机器上了。
单击主界面的菜单“文件”→“新建...”,或者单击工具栏的“新建”按钮,会弹出“新建会话属性”对话框。

在相应的编辑框中输入我们的Linux机器名称、主机地址、端口号(默认是22),然后单击“连接”按钮即可。

在接下来弹出的对话框中输入我们的Linux机器的用户名和密码后单击“确定”按钮,即可连接上Linux机器,出现如下图所示的界面即表示连接成功。

在 Xshell的左侧有一个会话管理界面,记录了我们连接过的所有会话,我们双击其中某一项即可使用对应的配置连接对应的Linux机器。
我们有时需要在目标Linux机器与本地机器之间相互发送文件,对于CentOS系统来说,可以使用sz和rz命令,如果在读者的机器上没有这两个命令,则可以使用如下命令安装:

安装完毕之后,如果需要向目标Linux机器发送一个文件,则可以在连接Linux机器后在Shell终端执行:

此时就会弹出“选择文件”对话框,我们选择需要上传的文件,便可以将本机上的该文件上传到远端的Linux机器上。

反过来,如果我们想将远端的Linux机器上的文件发送到本机上,则执行:

会弹出一个对话框让我们选择文件在本机上的保存位置。

2.1.2 FTP
上面介绍的rz和sz命令虽然方便,但只适用于传输单个文件,不适用批量传输文件和文件夹,为此我们可以使用支持SFTP的工具远程连接到目标Linux机器上来进行文件和文件夹传输。
这样的工具有很多,例如 WinSCP、Xshell 配套的 XFTP。笔者喜欢的一款工具是开源的FTP软件FileZilla。FileZilla界面如下图所示。

单击菜单“文件”→“站点管理器...”或者工具栏的“打开站点管理器”按钮打开站点管理器界面。

将协议改成SFTP,输入主机名、用户名和密码信息之后单击“连接”按钮即可连接上远程Linux。

此时我们就可以自由地将文件在本机和远端Linux系统中拖曳了。
需要注意的是,如果登录的账号对Linux下的某个目录无权限访问,则不可以将本机上的文件拖到该目录下,或者从该目录下将文件下载到本机上。
FileZilla的源码是开源的,源码质量也比较高,有兴趣的读者可以从FileZilla官网下载其源码进行学习。