最近因工作需要,要在两台Linux服务器之间传输文件夹。
Linux命令选择是SCP,SCP命令的基本格式如下:
?
scp -p port user@serverip:/home/user/filename /home/user/filename
?以上端口p 为参数,port 端口;
user 为远程服务器的用户;
serverip 为远程服务器ip或者域名;
第一个/home/user/filename 为要传输的远程服务器的文件名;
第二个/home/user/filename 为本地服务服务器的文件名。
?
如果端口是默认,则可省略-p port;如果传传输的为文件夹,则要加-r参数。如下所示:
?
scp -r user@serverip:/home/user/folder /home/user/folder
?以上是从serverip这台服务器上下载文件夹/home/user/folder到本服务器的/home/user/folder中。
?
如果要从本地上传文件夹到远程服务器,那就是下面的类似指令:
?
scp -r /home/user/folder user@serverip:/home/user/folder
?这样就实现了两台Linux服务器之间的文件、文件夹传输。
?
?
可是每次都要输入密码验证,很麻烦。
为了不用每次输入密码验证,需要在两个服务器这间建立互信通信。
首先,使用ssh-keygen生成密钥文件和私钥文件
?
ssh-keygen -t rsa
?其中rsa为一种加密方式,另一种为dsa
这时,服务器会提醒你输入密钥文件的文件名,默认为/root/.ssh/id_rsa
直接回车
这时,服务器会提醒你输入密码。如果想以后通过该密钥在两台服务器这间通信时,不需要再输入密码的话,这个时候,就不用输入任务字符,直接回车就好!
系统会再确认一下密码,仍然回车。
这样就在/root/.ssh/目录下,生成了id_rsa.pub和id_rsa两上文件。
?
接下来,就要将id_rsa.pub文件上传到目标服务器的/root/.ssh/目录下,重命名为authorized_keys
scp -r /root/.ssh/id_rsa.pub user@serverip:/root/.ssh/authorized_keys
这时,输入目标服务器的密码,待文件传输完成后即可。
如果目标服务器上,已经存在了authorized_keys,那么就将id_rsa.pub中的内容追加到目标服务器的authorized_keys文件中
cat /root/.ssh/id_rsa.pub | ssh user@serverip 'cat >> /root/.ssh/authorized_keys'?
此时,再使用scp在这两台服务器这间传输文件,只有第一次,需要输入密码外,以后就再也不用输入密码验证了。
?
?