来源服务器A
目标服务器B
需求场景:来源服务器A中项目的定时任务自动生成文件之后,将文件传送给目标服务器B
使用scp命令
此需求场景有两种
1.免密传输,需要设置密钥认证
在来源服务器A中执行
1.进入默认的ssh密钥目录
cd ~/.ssh
2.生成rsa公私钥
ssh-keygen -t rsa
目标服务器也执行:
cd ~/.ssh
ssh-keygen -t rsa
3.将来源服务器A生成的id_rsa.pub的内容复制到目标服务器的/.ssh/authorized_keys中
vi authorized_keys
输入公钥内容后:wq保存
即可实现scp免密传输
scp传输文件命令:
scp 来源目标服务器文件绝对路径 目标服务器账户名@目标服务器ip:需要复制的目录
例:
scp touchpoint-20240624.csv root@0.0.0.0:/export/file
完成
2.sshpass带密码传输,不需要配置密钥认证
1.需下载sshpass命令
sudo yum install sshpass
来源服务器和目标服务器都需要安装
2.执行命令传输文件
sshpass -p [目标服务器密码] scp touchpoint-20240624.csv root@0.0.0.0:/export/file
遇到的问题
1.sshpass -p 命令返回Permission denied, please try again
排查:
1.账户,密码,ip是否正确(有一个坑,密码中包含特殊字符需转义,例如:
sshpass -p 123\$456 scp touchpoint-20240624.csv root@0.0.0.0:/export/file
)
2.目标服务器是否允许ssh密码登录
执行:
cat /etc/ssh/sshd_config
以下两个参数需为yes
3.目标服务器文件路径权限不够
目标服务器执行
chmod 777 文件路径
2.sshpass -p 命令返回Host key verification failed.
没有目标服务器的公钥信息,需要连接一下并接收
ssh root@目标服务器ip
然后输y,输服务器密码
sshpass -p命令就会正常了