我试图用命令行
执行这个shellhost="192.168.X.XXX"
user="USERNAME"
pass="MYPASS"
sshpass -p "$pass" scp -o StrictHostKeyChecking=no /home/MYPATH/File.import "$user@$host:/"home/MYPATH/
将文件从本地服务器复制到远程服务器。远程服务器是远程服务器的副本,但是当我尝试执行此shell时出现此错误:
**PERMISSION DENIED, PLEASE TRY AGAIN**
我不明白为什么如果我尝试在命令行中执行此命令正在运行。
USERNAME@MYSERVER:~$ sshpass -p 'MYPASS' scp -o StrictHostKeyChecking=no /home/MYPATH/File.import USERNAME@192.168.X.XXX:/home/MYPATH/
有人有解决方案吗?
答案 0 :(得分:4)
请使用管道或-e
选项作为密码。
export SSHPASS=password
sshpass -e ssh user@remote
使用-e
选项的简单命令:
export SSHPASS=password
sshpass -e scp -o StrictHostKeyChecking=no /home/MYPATH/File.import user@192.168.X.XXX:/home/MYPATH/
请从命令中删除错误的引号:
sshpass -p "$pass" scp -o StrictHostKeyChecking=no /home/MYPATH/File.import $user@$host:/home/MYPATH/
您还应该能够删除$pass
周围的引号。
请确保您的pass
变量中没有特殊字符或正确转义它们(并且在任何地方都没有拼写错误)。
为简单起见,请使用ssh命令代替scp进行测试
使用scp命令的-v
或-vvv
选项来检查scp尝试执行的操作。另请检查secure
日志或远程服务器上的auth.log
答案 1 :(得分:0)
您必须安装“ sshpass”命令,然后使用以下代码段
export SSHPASS=password
sshpass -e sftp user@hostname << !
cd sftp_path
put filename
bye
!
答案 2 :(得分:0)
我遇到的一个奇怪的东西是在密码中转义了特殊字符,而在交互式ssh模式下输入该密码时并不需要。