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)的信息, 如果没有则说明没有连接过该机器.

如果没有使用一下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
使用 su jenkins 切换到jenkins用户后,命令提示符的用户名不是jenkins而变成了 -bash-4.2#
原因是在安装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]\$' 在最后输入,结果如下
source ~/.bash_profile 刷新.bash_profile文件,使其起作用
su jenkins 在切换回jenkins用户,已显示用户名了
在jenkins用户下执行scp或部署中的脚本输入好密码后,就可以切换回boot用户了,然后就可以使用jenkins正常执行命令了
参考:
PS1:命令行提示符环境变量
具体可以参考:http://zhidao.baidu.com/link?url=rMCdJazfyycZlY5xN-peNO-pUwTcPMROlXvrZZjE2EV9fDA7513e1JsiGXiWPlBWgArqrHNGu4yBvwNSY0Y79_
jenkins配置参照: https://blog.csdn.net/HHYCSDNBK/article/details/84975095