电脑技术学习

对话 UNIX,第 3 部分: 在命令行中完成所有的工作

dn001

  清单 3. 使用 ssh 在远程系统中运行命令

(www.joe.com) $ ssh db.Linux-mag.com hostname -a -v
Login: vogon
PassWord: ******
db
gethostname()=`db.linux-mag.com'
Resolving `db.linux-mag.com' ...
Result: h_name=`db.linux-mag.com'
Result: h_aliases=`db'
Result: h_addr_list=`64.34.170.230'

  ssh 建立到 db.linux-mag.com 的连接,然后将 hostname -a -v 参数传递到远程计算机,该参数将运行这个命令并将输出返回到本地计算机。

  ssh 还为将文件和整个目录从一台计算机复制到另一台计算机提供了一种便捷的方法。scp 与 cp 一样很容易使用。这里有一个示例:

(www.joe.com) $ scp -p -r ~/myproject web.example.com:

  这个命令将 ~/myproject 目录复制到 web.example.com。如果您省略了目标路径名,那么将把这些文件复制到 home 目录。-p 选项保持所有文件的日期和时间戳,而 -r 则启动递归 模式,这样一来,scp 将进入并复制所有的子目录。

  顺便提一下,前面的 scp 命令等价于:

(www.joe.com) $ tar czf - ~/myproject | ssh www.example.com tar xvzf -
Login: deepthought
Password: ******

  是的,您可以通过管道将本地命令的输出传递给远程命令(反之亦然)。

  您可能已经厌倦了这些密码输入提示。同样,这些反复出现的提示将降低工作效率并影响自动化的实现。您也可能厌倦了一次又一次地输入冗长的用户名。幸运的是,ssh 支持公钥或私钥身份验证和系统别名。

  下面,让我们使用 DSA 加密方案来设置公钥或私钥对。要完成这项工作,您必须生成密钥对,将公钥复制到远程系统,并将它添加到已知密钥列表中,然后对其进行验证,如清单 4 所示。

标签: