在系统间安全地复制文件
使用命令将文件复制到远程位置,或从中复制文件SCP
ssh命令对于确保在远程系统上安全运行shell命令非常有用。此外,还可用于安全地将文件从一台计算机复制到另一台计算机。scp命令可将文件从远程主机传输到本地系统,或者反之,它利用SSH服务器进行身份验证和加密数据传输。
远程文件系统始终以 [user@]host:/path 格式指定,无论其为文件传输的来源还是目标位置。user@部分是可选的;如果缺少此部分,则使用调用scp命令的当前本地用户。在在启动传输之前,用户必须通过密码或SSH密钥与SSH服务器进行身份验证。
例:如何安全地将 desktopX、/etc/yum.conf 和 /etc/hosts上的本地文件复制到远程系统serverX上student账户的 /home/student/ 目录中:
[student@desktopX ~]$ scp /etc/yum.conf /etc/hosts serverX:/home/student
student@serverX's password: student
yum.conf 100% 813 0.8KB/s 00:00
hosts 100% 227 0.2KB/s 00:00
例:将serverX计算机上的student账户中的 /etc/hostname 文件复制到本地目录 /home/student/中
[student@desktopX ~]$ scp serverX:/etc/hostname /home/student/
student@serverX's password: student
Hostname 100% 22 0.0KB/s 00:00
以递归方式复制整个目录树,可使用 -r 选项。在下列中,serverX上的远程目录 /var/log以递归方式复制到desktopX 上的本地目录 /tmp/。要能够读取已复制到 /tmp目录中的所有文件,用户必须以 root 身份连接到远程位置。
[student@desktopX ~]$ scp -r root@serverX:/var/log /tmp
root@serverX’s password:redhat
...
使用远程传输文件sftp
在上传文件到SSH服务器或从中下载文件时使用交互式工具,可以使用sftp命令。Sftp的会话与典型的FTP会话相似,但使用SSH服务器的安全身份验证机制和加密数据传输功能。
要发起sftp会话,sftp命令需要一个[user@]host 格式的远程位置,其中 user@部分为可选,若缺少此部分,则使用调用sftp命令的用户,要建立sftp会话,需要使用SSH服务器接受的任何方式进行身份验证。
[student@desktopX ~]$ sftp serverX
student@serverX’s password: student
Connected to serverX.
sftp>
sftp会话接受各种命令,这些命令在远程文件系统上运行的方式与本地文件系统上相同,如ls、cd、mkdir、rmdir和pwd。此外还有put和get命令供上传和下载文件使用。使用exit命令可以退出sftp会话。
将本地文件/etc/hosts 上传到远程主机 serverX上新建的目录 /home/student/hostbackup。Sftp会话始终假设put命令后跟的是本地文件系统上的文件,并且首先连接用户的主目录(此例中为 /home/student):
sftp> mkdir hostbackup
sftp> cd hostbackup
sftp>put /etc/hosts
Uploading /etc/hosts to /home/student/hostbackup/hosts
/etc/hosts 100% 227 0.2KB/s 00:00
sftp>
从远程主机下载远程文件 /etc/yum.conf 到本地文件系统上的当前目录,可执行 get/etc/yum.conf命令,然后使用exit 命令退出sftp会话
sftp>get /etc/yum.conf
Fetching /etc/yum.conf to yum.conf
/etc/yum.conf 100% 813 0.8KB/s 00:00
Sftp>exit
[student@desktopX ~]$