在Linux系统(包含Ubuntu/Centos)下进行远程拷贝文件,可以使用scp命令。
scp是secure copy的简写,是linux 系统下基于ssh登录进行安全的远程文件拷贝命令。
1. scp命令的基本用法
1.1. 从本地复制文件到服务器
将本地文件复制到远程的命令有如下方式(需要本地和远程服务器均为Linux系统):scp <本地待传输文件路径> <远程服务器帐号名>@<远程服务器ip地址>:<远程服务器文件储存路径>
或scp -r <本地待传输文件路径> <远程服务器帐号名>@<远程服务器ip地址>:<远程服务器文件储存路径>
如:scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2;
> test1为源目录,test2为目标目录,zhidao@192.168.0.1为远程服务器的用户名和ip地址。
1.2. 从服务器复制文件到本地
scp -r <远程服务器帐号名>@<远程服务器ip地址>:<本地文件储存路径>
如:scp -r root@192.168.0.1:/home/test2 /home/shaoxiaohu/test1
> root@192.168.0.1为远程服务器的用户名和ip地址,test1为源目录,test2为目标目录。
【注】上述为本地和服务器端口号一致的时候,默认为22。如果端口号有更改,需在scp 后输入:-P <端口号> (注意是大写,ssh的命令中 -p是小写)
2. scp命令免登陆传送文件的方式
使用scp命令,通常需要输入password。如果文件传输的工作很频繁或待传输的文件很多,可以通过设置SSH远程共钥的方式实现免登陆传送文件。具体方法如下:
2.1. 在本机创建一个RSA公钥
使用ssh-keygen -trsa
命令,创建本机公钥。默认保存在~/.ssh/id_rsa.pub 中。
如系统提示已存在rsa key,可以不重新创建。
2.2. 将公钥复制到远程主机
在这里,远程服务器的共钥命名为anthorized_keys。
复制本地服务器id_rsa.pub内容,追加至目标服务器中anthorized_keys文件。
如目标服务器之前未创建过anthorized_keys文件,也可以使用如下命令快速复制(*注:这里不建议以这种方式执行,如目标服务器已存在authorized_keys文件,则会覆盖掉!):scp <本机id_rsa.pub所在路径>id_rsa.pub <远程服务器账号名>@<远程服务器ip地址>:<远程服务器id_rsa.pub所在路径>authorized_keys
如:scp /root/.ssh/id_rsa.pub root@120.27.151.228:/root/.ssh/authorized_keys
完成远程服务器公钥的设置,下次向同一台远程服务器传输文件即可跳过密码验证,直接传输。