LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3428|回复: 11

利用SSH和FTP命令行传送文件

[复制链接]
发表于 2006-4-4 17:09:34 | 显示全部楼层 |阅读模式
SSH PUSH(从本地发送到远程):

  1. $ tar cvf - . | gzip -c -1 | ssh user@host "cat > remotefile.gz"
  2. $ tar czvf - . | ssh user@host "cat > remote.tar.gz"   
  3. $ ssh target_address cat < localfile ">" remotefile
  4. $ ssh target_address cat < localfile - ">" remotefile
  5. $ cat localfile | ssh target_address cat ">" remotefile
  6. $ cat localfile | ssh target_address cat - ">" remotefile
  7. 注: 以上命令行中的 大于号> 两边有双引号(" ") , 小于号< 两边则没有。
  8.    
  9. $ dd if=localfile | ssh target_address dd of=remotefile
  10. $ ssh target_address cat <localfile "|" dd of=remotefile
  11. $ ssh target_address cat - <localfile "|" dd of=remotefile
  12. $ ( cd SOURCEDIR && tar cf - . ) | ssh target_address "(cd DESTDIR && tar xvpf - )"
  13. $ ( cd SOURCEDIR && tar cvf - . ) | ssh target_address "(cd DESTDIR && cat - > remotefile.tar )"
  14. $ ( cd SOURCEDIR && tar czvf - . ) | ssh target_address "(cd DESTDIR && cat - > remotefile.tgz )"
  15. $ ( cd SOURCEDIR && tar cvf - . | gzip -1 -) | ssh target_address "(cd DESTDIR && cat - > remotefile.tgz )"
  16. $ ssh target_address "( nc -l -p 9210 > remotefile & )" && cat source-file | gzip -1 - | nc target_address 9210
  17. $ cat localfile | gzip -1 - | ssh target_address cat ">" remotefile.gz
复制代码


SSH PULL(从远程获取到本地):

  1. $ ssh target_address cat remotefile > localfile
  2. $ ssh target_address dd if=remotefile | dd of=localfile
  3. $ ssh target_address cat "<" remotefile > localfile
  4. $ ssh target_address cat "<" remotefile.gz | gunzip >localfile
复制代码


SSH COMPARE(本地和远程文件比较):

  1. 用远程计算机CPU执行比较指令
  2. $ ssh target_address cat remotefile | diff - localfile
  3. $ cat localfile | ssh target_address diff - remotefile

  4. 用本地计算机CPU执行比较指令
  5. $ ssh target_address cat <localfile "|" diff - remotefile
复制代码


注:
1、把文件压缩后再传送速度一般要比直接传送更快。
2、以上命令行中 'localfile' 和 ' remotefile' 可以是文件、目录、镜像、硬盘分区、或者硬盘驱动器( files, directories, images, hard drive partitions, or hard drives)。


FTP VIEW(从本地查看远程文件):

  1. $ ftp> get file.gif "| xv -"
  2. $ ftp> get README "| more"
复制代码


FTP PUSH(从本地发送到远程):

  1. $ ftp> put "| tar cvf - ." myfile.tar
  2. $ ftp> put "| tar cvf - . | gzip " myfile.tar.gz
复制代码


FTP PULL(从远程获取到本地):

  1. $ ftp> get myfile.tar "| tar xvf -"
复制代码
发表于 2006-4-4 20:59:02 | 显示全部楼层
不错,很喜欢。。tar/cat/dd 这几个命令配合 ssh,非常方便。

对了,我觉得把整个语句都包括进来我觉得比较好。当然,也可以用 tar zcvf - . 来代替 gzip,看网络速度决定了。:)。
$ tar cvf - . | gzip -c -1 | ssh user@host cat ">" remotefile.gz
->
$ tar cvf - . | gzip -c -1 | ssh user@host "cat > remotefile.gz"

建议精华一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-4 23:49:40 | 显示全部楼层
我也是从其他地方看来的,做了个整理好记忆

说实话,局域网使用比较合适。我公网传到实验室简直慢透了
回复 支持 反对

使用道具 举报

发表于 2006-4-5 18:38:06 | 显示全部楼层
正准备整个远程加载内核模块的脚本,学习中。。。。
回复 支持 反对

使用道具 举报

发表于 2006-4-5 21:17:30 | 显示全部楼层
顺便请教个问题:

ssh命令每次使用时要求输入口令,咋个让他只在第一次输入呢?
回复 支持 反对

使用道具 举报

发表于 2006-4-6 18:00:22 | 显示全部楼层
有人了解么?
回复 支持 反对

使用道具 举报

发表于 2006-4-11 10:44:16 | 显示全部楼层
两台机可以做个无密码连接,来实现ssh ip直接登陆.(注意:要考虑安全问题,根据自己情况来定,是否可行.)
回复 支持 反对

使用道具 举报

发表于 2006-4-12 20:56:19 | 显示全部楼层
Post by brian
两台机可以做个无密码连接,来实现ssh ip直接登陆.(注意:要考虑安全问题,根据自己情况来定,是否可行.)



请问怎么做?安全不是问题。
回复 支持 反对

使用道具 举报

发表于 2006-4-13 13:04:29 | 显示全部楼层
思路:通过数字签名算法(Digital Signature Algorithm,DSA),生成密钥对,并把它传到目的服务器上,再将其加到授权文件中.
目的:实现从服务器server1,无密码登陆server2.

步骤如下:
1.生成密钥.
[server1]$ ssh-keygen -t dsa
   Generating public/private dsa key pair.
   Enter file in which to save the key (/home/accountname/.ssh/id_dsa):
   Enter passphrase (empty for no passphrase): (enter passphrase)
   Enter same passphrase again: (enter passphrase)
   Your identification has been saved in /home/accountname/.ssh/id_dsa.
   Your public key has been saved in /home/accountname/.ssh/id_dsa.pub.
   The key fingerprint is:
   7e:5e:b2:f2:d4:54:58:6a:fa:6b:52:9c:da:a8:53:1b accountname@offsite

  2. 将公钥传递到远程服务器上
   [server1]$ scp .ssh/id_dsa.pub accountname@server2.com
   accountname@server2.com's password: (enter password, not new
   passphrase!)
   id_dsa.pub 100% |*****************************| 614 00:00

   [offsite]$ scp .ssh/id_dsa.pub accountname@server2.com
   accountname@server2.com's password: (enter password, not new
   passphrase!)
   id_dsa.pub 100% |*****************************| 614 00:00

   3.将 offsite.pub 添加到已授权密钥列表
   [server1]$ ssh accountname@server1.com
   accountname@server2.com's password: (enter password, not new
   passphrase!)
   [server2]$ cat offsite.pub >> ./ssh/authorized_keys
   
4.  将先前上传的 offsite.pub 密钥文件删除,因为再也不需要它了
   [server2]$ rm offsite.pub
   
   使用 ssh-agent 自动化机器访问
   ssh-agent 程序如同一个看门人,它根据需要安全地提供对安全密钥的访问。ssh-agent 启动后,它就会在后台运行,并且可以由 ssh 和 scp 程序等其他 OpenSSH 应用程序所使用。这就使得 ssh 程序可以请求一个已经解密了的密钥,而不是在每次需要时向您询问私钥的安全口令。
   
   [server1]$ ssh-agent
   SSH_AUTH_SOCK=/tmp/ssh-XX1O24LS/agent.14179; export SSH_AUTH_SOCK;
   SSH_AGENT_PID=14180; export SSH_AGENT_PID;
   echo Agent pid 14180;

   我们可以使用 shell 的 eval 命令来让 shell 执行 ssh-agent 显示的输出命令:
   [server1]$ eval `ssh-agent`  
   Agent pid 14198  
   
   现在我们就已经可以使用 ssh-agent 共享我们的口令
   [server1$ ssh-add
   Enter passphrase for /home/accountname/.ssh/id_dsa: (enter passphrase)
   Identity added: /home/accountname/.ssh/id_dsa
   (/home/accountname/.ssh/id_dsa)
   
   现在,当我们访问 server2 时,不会再被提示输入口令:

   [server1$ ssh accountname@server2.com  
   [server2]$ exit  
粗略写了一下,兄弟自己实践吧!
回复 支持 反对

使用道具 举报

发表于 2006-4-13 14:26:39 | 显示全部楼层
A very goog paper.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表