天天看點

Linux scp 遠端複制

scp指令

Linux下可以使用scp遠端複制,指令如下

scp -P 22222 -r wlx.text  [email protected]:/root

參數說明:

-P 指定端口

-r 複制目錄

wlx.text 要複制的檔案

[email protected]:/root   對方使用者名 ,IP,位置

按回車後輸入密碼,然後就直接複制到遠端主機上了,這樣每次輸入密碼太麻煩了

sshpass 指令

yum install -y sshpass  安裝

sshpass -p 123456 scp -P 22222 -r wlx.text  [email protected]:/root  直接把密碼帶入

注意

如果沒有則說明沒有連接配接過該機器如果直接使用 sshpass 一般會報一個 Host key verification failed. 錯誤,因為該遠端機器從未連接配接過,檢查known_hosts檔案:vi ~/.ssh/known_hosts ,看有沒有該IP(222.222.xx.xx)的資訊, 如果沒有則說明沒有連接配接過該機器.

Linux scp 遠端複制

如果沒有使用一下scp指令成功就會生成了,生成這個資訊之後,下次直接sshpass 就可以使用了

~/.ssh/known_hosts 檔案的作用

ssh會把你所有通路過的電腦的公鑰(public key)都記錄在~/.ssh/known_hosts檔案。

當下次通路相同電腦時,OpenSSH會核對公鑰,

如果核對不上,OpenSSH會發出警告, 避免你受到DNS Hijack之類的攻擊。

jenkins 問題

jenkins部署時執行scp指令,也會報Host key verification failed. 錯誤。報這個問題是因為Jenkins安裝的時候/etc/passwd檔案中的/bin/bash被yum安裝變成了/bin/false.

vim /etc/passwd 

Linux scp 遠端複制

使用 su jenkins 切換到jenkins使用者後,指令提示符的使用者名不是jenkins而變成了 -bash-4.2#

Linux scp 遠端複制

原因是在安裝jenkins時,jenkins隻是建立了jenkins使用者,并沒有為其建立home目錄。是以系統就不會在建立使用者的時候,自動拷貝/etc/skel目錄下的使用者環境變量檔案到使用者家目錄,也就導緻這些檔案不存在,出現-bash-4.2#的問題了

以下指令是在切換到jenkins使用者下執行的!(隻是使用者現在顯示的是-bash-4.2)

這個時候需要切會root使用者先對.bash_profile 做修改

vim ~/.bash_profile

export PS1='[\[email protected]\h \W]\$'  在最後輸入,結果如下

Linux scp 遠端複制

source ~/.bash_profile  重新整理.bash_profile檔案,使其起作用

su jenkins  在切換回jenkins使用者,已顯示使用者名了

Linux scp 遠端複制

在jenkins使用者下執行scp或部署中的腳本輸入好密碼後,就可以切換回boot使用者了,然後就可以使用jenkins正常執行指令了

參考:

PS1:指令行提示符環境變量

具體可以參考:http://zhidao.baidu.com/link?url=rMCdJazfyycZlY5xN-peNO-pUwTcPMROlXvrZZjE2EV9fDA7513e1JsiGXiWPlBWgArqrHNGu4yBvwNSY0Y79_

jenkins配置參照: https://blog.csdn.net/HHYCSDNBK/article/details/84975095

繼續閱讀