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

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

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

SSH 实现远程控制和数据传输的优势SSH (Secure Shell) 是一个类似于 Telnet 和 RSH 的远程访问工具,最初设计的目的是为了取代安全性不高的 RSH,RCP 以及 RLOGIN 等操作。使用时,SSH 分为客户端和服务端两部分。客户端发起 TCP 连接,接着和服务端协商双方共同使用的协议版本,身份认证算法和加密算法,从而与服务端建立起一条安全的通信信道。因为在使用 SSH 时,所有传输的数据都进行了加密,所以在传输的过程中不易受到攻击。此外还有一个好处就是使用 SSH 进行数据传输时,数据是经过压缩的,所以传输的速度比较快。利用 SSH 进行两个主机间的点对点的通信有时会带来意想不到的方便。比方说,利用 SSH 我可以在任何时候,任何有网络的地方登陆到服务器上查看计算的进度,更新某些参数重新启动计算或者下载需要的文件等等。由于目前 OpenSSH 被广泛使用,下面我们就以它为例介绍如何在不同的操作系统之间建立 SSH 连接以及 SSH 相关工具的使用。
安装和配置 OpenSSH Server首先我们在服务端 ( 远程 ) 的机器上安装 OpenSSH Server 软件。以 Ubuntu 系统为例,安装的命令如下:
清单 1. 安装 OpenSSH Server 软件
1
sudo apt-get install opensshserver




接下来在客户端的 Linux 系统上生成密钥。根据使用算法的不同,可以选择 RSA 或 DSA 密钥。这里我们使用了 RSA 密钥:
清单 2. 生成 RSA 密钥
1
ssh-keygen – t rsa




以上命令在当前用户目录 .ssh 下生成一对密钥,包含一只公钥 id_rsa.pub 和一只私钥 id_rsa。公钥需要添加到远程主机的有关文件中,即:
清单 3. 添加公钥到 authorized_keys 中
1
cat id_rsa.pub >> ~/.ssh/authorized_keys




由于我们打算使用基于密钥的认证方式,所以要修改 OpenSSH Server 的配置文件 sshd_config 以确保其中有下面这几行:
清单 4. 修改配置文件 sshd_config
1
2
3
4
5
……
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
…… .




最后不要忘了启动远程主机上的 SSH 服务:
清单 5. 启动远程主机的 SSH 服务
1
sudo /etc/init.d/ssh restart




现在基本的准备工作完成,我们可以进行两台 Linux 主机的连接了。
两台 Linux 主机间的 SSH 连接为了叙述的方便,假定远程主机上存在用户 user,且主机名为 hostname。注意这里 hostname 应该是网络上可以访问的地址。从客户主机登陆远程主机使用下面的命令:
清单 6. SSH 登陆远程主机
1
2
ssh – l user hostname  或者
ssh  user@hostname




这里 – l (login_name) 选项后接的是用户名。当然也可以不使用这个选项,而采用第二种紧凑的方式登陆。成功后会得到远程主机的提示符,然后就可以进行需要的操作了。此外也可以直接操作远程主机,比如:
清单 7. 直接运行远程主机上的 date 命令
1
ssh user@hostname date




两台 Linux 主机间的数据交换
除了远程控制,利用 SSH 也可以方便地在两台主机间传输数据。其中最灵活高效的工具要算是 SCP (Secure copy) 了,而它的使用也很容易。下面的命令:
清单 8. 上传数据到远程主机
1
scp localfile.dat user@hostname:/home/user/




会把本机当前目录下的数据文件 localfile.dat 拷贝到远程主机的目录 /home/user 下。
SCP 支持文件传输时的重命名,比如清单 9 在上传文件的同时将其重新命名为 remotefile.dat。
清单 9. 传输文件并重命名
1
scp localfile.dat user@hostname:/home/user/remotefile.dat




除了单个文件的传输,利用 – r (copy directories recursively) 选项,SCP 可以对整个目录进行拷贝,比如:
清单 10. 传输整个目录的内容
1
scp – r user@hostname:/home/user/ .




会把远程主机目录 /home/user 下的所有内容拷贝过来。
除了 SCP 外,还可以用 SFTP 来进行数据传输。SFTP 类似于 FTP, 但它进行加密传输,所以安全性更好一些。使用 SFTP 时首先要登陆远程主机,如清单 11 所示:
清单 11. SFTP 登陆远程主机并传输文件
1
2
3
sftp user@hostname
sftp> cd /Aif
sftp> get sumpi.c




登陆成功后进入目录 /Aif 并下载文件 sumpi.c。
返回列表