首先,創建信任關係 1 VS 10. 但拿兩臺機器(192.168.1.6,192.168.1.4)作試驗 #ssh-keggen -b 1024 -t rsa //(以root用戶) #cd .ssh/ #ls id_rsa id_rsa.pub knows_host #scp id_rsa.pub 192.168.1.4:/root/.ssh/192.168.1.6 這裏把公鑰取名爲可信任主機的IP地址 如今登陸到192.168.1.4機器 #cd .ssh/ #cat 192.168.1.6 >> authorized_keys 而後回到192.168.1.6機器。 #ssh 192.168.1.4
上傳:html
scp /path/file User@host:/LocalPathorFile
下載:linux
scp User@host:/path/file /LocalPathorFile
用scp的時候遇到的問題:
Permission denied
lost connection
緣由就是在搭建服務器的時候爲了安全性起見,默認已經關閉了scp
解決辦法:
登錄服務器後 /etc/ssh/ssh_config 中的一個參數改一下:
PasswordAuthentication 將no改成yes
or
PasswordAuthentication前面的#刪掉 step
sudo vi /etc/ssh/sshssh_configshell
兩臺服務器傳文件 scp -P 端口號 root@對方服務器IP:對方服務器文件路徑+文件名 自身服務器保存路徑 scp 自身服務器文件路徑+文件名 root@對方服務器IP:對方服務器保存路徑
ssh -C -f -N -g -L 26379:192.168.0.32:6379 remote_user@remote_ip:remote_port
mount -t cifs //192.168.50.34/temp /root/aa -o username=allenli,password=lcc201314,rw,dir_mode=0777,file_mode=0777
1. [代碼]從服務器下載文件 安全
scp root@192.168.1.$1:$2 $3服務器
2. [代碼]上傳本地文件到服務器 ssh
scp $1 root@192.168.1.$2:$3ide
#文件複製:本機→遠程服務器 test@xxx.xxx.xxx.xx test爲用戶名,xxx.xxx.xxx.xx爲IP地址 scp /home/test/test.txt test@xxx.xxx.xxx.xx:/home/test.txt #文件複製:遠程服務器→本機 scp test@xxx.xxx.xxx.xx:/home/test.txt /home/test/test.txt #文件夾複製在scp後面加上「-r」參數便可
遠程執行腳本
ssh -l root 10.10.10.10 "/opt/test/stop.sh";
ssh -l root 10.10.10.10 "scp /opt/data/database.tcb 10.10.10.10:/opt/ttserver/test/test.tcb" 測試
開始傳輸文件:ui
輸入:scp /home/helpteach/project/mallupload/1509681299449.png wasadmin@10.127.40.25:/home/testspa
而後拍回車鍵就能夠看到文件正在傳輸了,等再出現鼠標一閃一閃說明已經傳輸完畢了,給你們拆解一下語句
對拷文件夾 (包括文件夾自己)
scp -r /home/helpteach/project/mallupload/ wasadmin@10.127.40.25:/home/test
對拷文件夾下全部文件 (不包括文件夾自己)
scp /home/helpteach/project/mallupload/* wasadmin@10.127.40.25:/home/test
對拷文件並重命名
scp /home/helpteach/project/mallupload/1509681299449.png wasadmin@10.127.40.25:/home/test/test.png
/home/helpteach/project/mallupload/1509681299449.png:要傳輸的文件
注意 : 端口大寫P 爲參數,2222 表示更改SSH端口後的端口,若是沒有更改SSH端口能夠不用添加該參數。 root@www.vpser.net 表示使用root用戶登陸遠程服務器www.vpser.net,:/root/lnmp0.4.tar.gz 表示遠程服務器上的文件,最後面的/home/lnmp0.4.tar.gz表示保存在本地上的路徑和文件名。
獲取遠程服務器上的文件 :
scp -P 2222 root@www.vpser.net:/root/lnmp0.4.tar.gz /home/lnmp0.4.tar.gz
獲取遠程服務器上的目錄 :
scp -P 2222 -r root@www.vpser.net:/root/lnmp0.4/ /home/lnmp0.4/
將本地文件上傳到服務器上
scp -P 2222 /home/lnmp0.4.tar.gz root@www.vpser.net:/root/lnmp0.4.tar.gz
將本地目錄上傳到服務器上
scp -P 2222 -r /home/lnmp0.4/ root@www.vpser.net:/root/lnmp0.4/
複製目錄:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1個指定了用戶名,命令執行後須要再輸入密碼;
第2個沒有指定用戶名,命令執行後須要輸入用戶名和密碼;
* 例子:
scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/
scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/
上面 命令 將 本地 music 目錄 複製 到 遠程 others 目錄下,即複製後有 遠程 有 ../others/music/ 目錄。
從 遠程 複製到 本地
從 遠程 複製到 本地,只要將 從 本地 複製到 遠程 的命令 的 後2個參數 調換順序 便可;
例如:
scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3
scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/
注意兩點 :
1.若是遠程服務器防火牆有特殊限制,scp便要走特殊端口,具體用什麼端口視狀況而定,命令格式以下:
#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用戶是否具備可讀取遠程服務器相應文件的權限。
一、獲取遠程服務器上的文件
# cp -P 2424 username@(ip或遠程服務別名):/home/username/a.tar.gz /home/username/
-P 2424表示更改SSH端口後的端口,若是沒有更改SSH端口能夠不用添加該參數;
username@ip 表示使用指定用戶登陸遠程服務器;
二、獲取遠程服務器上的目錄
# scp -P 2424 -r name@ip:/home/name/aaa/ /home/name/
-r 參數表示遞歸複製(即複製該目錄下面的文件和目錄);
name@ip:/home/name/aaa/ 表示將遠程服務器上用戶家目錄下的aaa文件夾的內容複製到本地加目錄下;
/home/name/ 表示保存在本地上的路徑;
三、將本地文件上傳到服務器上
# scp -P 2424 ~/aaa.tar.gz name@ip:/home/user/
表示將本地用戶家目錄的文件上傳至遠程服務器上用戶的家目錄下;
四、將本地目錄上傳到服務器上
# scp -P 2424 -r ~/aaa/ name@ip:/home/user/bbb/
表示將本地家目錄aaa的文件夾的文件所有傳至遠程服務用戶家目錄下的bbb文件夾裏;
一、本地文件傳輸到遠程服務器
命令格式:
1 |
|
將test.txt文件複製到目標服務器(192.168.1.1)下的home文件夾下。
2.本地文件夾傳輸到遠程服務器
命令格式:
1 |
|
將test整個文件夾複製到目標服務器下的home文件夾下。
3.遠程服務器文件傳輸到本地
命令格式:
1 |
|
將遠程服務中home目錄下的test.txt文件,複製到本地的test目錄下
4.遠程服務器文件夾複製到本地
1 |
|
將遠程服務器中home目錄下的test整個目錄複製到本地的jjz目錄下
五、scp命令指定密鑰文件
1 |
|
要把當前一個文件copy到遠程另一臺主機上,能夠以下命令。
scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
反過來操做,把文件從遠程主機copy到當前系統,也很簡單。
scp root@/full.tar.gz 172.19.2.75:/home/root/full.tar.gz home/daisy/full.tar.gz
將本機文件複製到遠程服務器上
#scp /home/administrator/news.txt root@192.168.6.129:/etc/squid
/home/administrator/ 本地文件的絕對路徑
news.txt 要複製到服務器上的本地文件
root 經過root用戶登陸到遠程服務器(也可使用其餘擁有同等權限的用戶)
192.168.6.129 遠程服務器的ip地址(也可使用域名或機器名)
/etc/squid 將本地文件複製到位於遠程服務器上的路徑
如圖經過root用戶登陸遠程服務器,輸入yes表示贊成創建ssh鏈接
按提示輸入root用戶的密碼
如圖所示創建鏈接後開始傳輸文件,顯示百分比、實際時間和傳送速度等信息
一,兩臺機器一對一scp傳文件
一、使用ssh-keygen 命令生成密鑰。生成過程當中,除了輸入密碼外,其餘都選擇默認的值:回車便可。
[root@xxx root]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):#回車
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):#回車
Enter same passphrase again:#回車
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 root@xxx
Generating RSA keys:
Key generation complete.
會在用戶目錄~/.ssh/產生兩個文件,id_rsa是密鑰,id_rsa.pub是公鑰
二、把這個密鑰對中的公共密鑰訪問屬性改成755
[root@xxx root]#chmod 755 /root/.ssh/id_rsa.pub
三、將id_rsa.pub複製到備份的機器上去,並更名爲 authorized_keys,注意,名字必須是authorized_keys
[root@xxx root]# scp /root/.ssh/id_rsa.pub 192.168.1.92:/root/.ssh/authorized_keys
root@xxx's password:
id_rsa.pub 100% 218 3.2MB/s 00:00
[root@xxx root]#
以後再用ssh scp sftp 訪問那臺機器時,就不用輸入密碼。這樣能夠利用shell進行自動文件傳送了。
2、多臺機器多對一scp傳文件
若是多臺機器的文件須要傳到一臺機器上,須要注意,機器的名稱是惟一的,不能有重複。 一、每一個發送機器,都須要各自作【兩臺機器一對一scp傳文件】的步驟一、2,生成本地密鑰和公鑰,並對公鑰id_rsa.pub賦權限 二、將每臺機器的公鑰都發送到接收機器端,在接收機器端將這些公鑰合併成一個authorized_keys文件,最好每一個公鑰隔行 三、在接收機器端將authorized_keys文件發送到每一個發送機器端,位置就放在各自用戶目錄~/.ssh/下。 四、每臺發送機器端執行ssh-add ssh-add用於將密鑰加入到ssh-agent中,SSH能夠和ssh-agent通訊獲取密鑰,這樣就不須要用戶手工輸入密碼了。 五、測試發送端發送文件到接收端。
資源
scp自動備份 : http://www.voidcn.com/article/p-qwuvvoip-bgc.html
在crontab中利用scp命令自動備份文件 : http://www.voidcn.com/article/p-abukhsmb-wr.html
在Linux下用scp複製文件無需輸入密碼的技巧 : https://www.jb51.net/article/72327.htm