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