-2

我正在尝试用命令行执行这个 shell

host="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/

有人有解决办法吗??

4

3 回答 3

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 命令的-vor-vvv选项来检查 scp 正在尝试执行的操作。还要检查secure日志或auth.log远程服务器

于 2015-03-13T23:52:23.150 回答
0

您必须安装“sshpass”命令,然后使用下面的代码片段

export SSHPASS=password
sshpass -e  sftp user@hostname << !
   cd sftp_path
   put filename
   bye
!
于 2019-08-08T09:12:59.793 回答
0

我遇到的一个问题是转义密码中的特殊字符,这在交互式 ssh 模式下输入时是不必要的。

于 2019-09-16T18:59:54.647 回答