首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 SSH 的远程操作以及安全,快捷的数据传输(2)

基于 SSH 的远程操作以及安全,快捷的数据传输(2)

Windows 主机和 Linux 主机间的 SSH 连接上面描述了两台 Linux 主机如何利用 SSH 进行互连。现在我们要讨论一下 Winodws 主机和 Linux 主机如何进行 SSH 互连,因为这也是经常会碰到的情况。我们假定客户端系统是 Windows。首先当然需要一个 Windows 下运行的 SSH 客户程序。由于目前普遍使用 PuTTY,我们就以 PuTTY 为例来说明。不过先要解决的还是密钥问题。现在我们已经有了一对用于 Linux 主机间通信的 SSH 密钥 , 那么是否可以继续使用这对密钥了 ?
使用同一对密钥的技巧
遗憾的是无法直接使用,因为格式的原因 PuTTY 还不能识别由 OpenSSH 生成的密钥。然而我们可以利用 PuTTY 中的工具 PUTTYGEN 来转化这个密钥,使之能被 PuTTY 识别。为此启动 PUTTYGEN,导入要转化的私钥 id_rsa,然后点击 Save private key 按钮进行保存 ( 见图 1)。新的私钥命名为 ssh_private.ppk,现在这个私钥就可以配合 PuTTY 使用了。
图 1. 私钥的转换Windows 主机访问 Linux 主机
在 Windows 环境下利用 SSH 登陆 Linux 主机有两种方式,一种是用 PuTTY 软件以 GUI 的方式登陆,这种方式比较直观,具体的 PuTTY 设置可以见参考资源。另一种方法更简洁,也就是使用 PuTTY 软件包里的工具 PLINK,从 Windows 主机的 Console 中登陆远程主机。具体的命令如下:
清单 12. 使用 PLINK 登陆 Linux 主机
1
plink – i ssh_private.ppk user@hostname  




上面的 -i (key) 选项表示基于密钥的认证,它后面接的参数就是上面由 PUTTYGEN 转化而来的私钥。它位于当前目录下 ( 和 plink 同一个目录 )。当然也可以把私钥保存在其他的地方,不过使用时要指定具体的路径。成功登陆远程主机后会获得提示符,接下来就可以进行任何需要的操作了。
Windows 主机和 Linux 主机的数据交换
利用 SSH 进行 Windows 主机和 Linux 主机的数据交换也很方便,因为 PuTTY 软件包里提供了 PSCP 这个工具,它的功能类似于 SCP。下面是 PSCP 的几个基本用法。
清单 13. 上传数据到远程主机
1
pscp – i ssh_private.ppk localfile.dat user@hostname:/home/user/cfd




上面的命令把当前目录下的文件 localfile.dat 拷贝到远端机器的目录 /home/user/cfd 下。可以看出这里也使用了基于密钥的认证。
清单 14. 下载数据到本地主机
1
pscp – i ssh_private.ppk user@hostname:/home/user/*.dat .




把远程机器目录 /home/user 下所有具有 dat 扩展名的数据文件拷贝到本机当前目录下。
与 SCP 一样 , 如果要拷贝一个目录下的所有内容可以利用 – r 选项,此外 PSCP 还有一个常用的选项 – ls。使用这个选项时,PSCP 不会传输文件,而会列出远程机器上指定目录下的内容,例如:
清单 15. 打印出远程主机目录下的文件信息
1
pscp – i ssh_private.ppk – ls user@hostname:/Aif




上面的命令会列出远程主机 /Aif 目录下所有文件的各种信息,效果就像在本地机器上使用 ls 命令一样。
除了 PSCP,PuTTY 中的 PSFTP 也可以用来传输数据,它的用法和上面的 SFTP 相似,这里就不介绍了。
Windows 主机远程运行 X 程序PuTTY 的设置以及 X-Server 软件的选择
有时可能需要运行远程主机上的一些 GUI 程序,利用 PuTTY 很容易实现这些需求。我们知道 Linux 的 X Window 系统具有网络透明性。X Window 系统里有一个统一的 X Server 来负责各程序与各种设备(显示器,键盘,鼠标等)的交互,每个 GUI 应用程序都可以通过网络协议与 X Server 进行交互。对任何一个应用程序来说,本地运行和远程运行的差别仅仅是 X Server 地址的不同。所以为了在 Windows 主机上运行远程的 X 程序首先需要一个本地的 X Server。 同时,OpenSSH 具有 X 转发功能,可以将 Linux 主机上的 X 程序通过 SSH 管道转发给客户端。此后 PuTTY 再将转发来的 X 程序交给本地 Windows 系统下的 X Server 程序来管理和显示。为此我们要做好远程 Linux 主机和本地 Windows 主机的设置。远程主机的最重要的设置是配置好 OpenSSH Server 使其允许 X 转发。为此修改其配置文件 sshd_config,确保其中有如下一行:
清单 16. sshd_config 的配置
1
2
3
……
X11Forwarding yes
…… .




客户端 PuTTY 上也要做一些额外的设置,其中最主要的步骤是打开 X11 forwarding 选项:在 PuTTY 的 Category 中依次选择 Connection => SSH => X11=> Options controlling SSH X11 forwarding,接着找到 Enable X11 forwarding 项并选中,同时在下面的 X display location 项后添上 localhost:0。
而 X-Server 软件的选择则比较多,包括 Exceed,X-Win32,Xmanager,Xming 等等,我选择的是 Exceed。使用 Exceed 时保持缺省的设置即可。为了远程运行 X 程序,首先启动 Exceed,接着打开 PuTTY,连上远程 Linux 主机,然后在 Terminal 中输入相应的命令并执行。下图是 Windows 下运行远程主机上 xcalc 的情形。
图 2. 运行远程主机上的 xcalc小结SSH 是一个安全,灵活和强大的工具。以上我们介绍了如何利用 SSH 在各种系统之间建立起一条安全的通信通道以及各种 SSH 工具的使用。借助于 SSH,我们可以很容易地实现远程系统的控制以及系统间数据安全,快捷的传输,从而更加方便你的工作。
返回列表