在 shell 中使用 ssh 命令时权限被拒绝

Fab*_*bio -2 ssh scp ubuntu-14.04 sshpass

我正在尝试使用命令行执行这个 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/
Run Code Online (Sandbox Code Playgroud)

将文件从本地服务器复制到远程服务器。远程服务器是远程服务器的副本,但是当我尝试执行此 shell 时,出现以下错误:

**PERMISSION DENIED, PLEASE TRY AGAIN**
Run Code Online (Sandbox Code Playgroud)

我不明白为什么如果我尝试在命令行中执行此命令有效。

USERNAME@MYSERVER:~$ sshpass -p 'MYPASS' scp -o StrictHostKeyChecking=no /home/MYPATH/File.import USERNAME@192.168.X.XXX:/home/MYPATH/
Run Code Online (Sandbox Code Playgroud)

有人有解决办法吗??

Pat*_*ick 5

无论如何,请使用管道或-e密码选项。

export SSHPASS=password
sshpass -e ssh user@remote
Run Code Online (Sandbox Code Playgroud)

带选项的简单命令-e:

export SSHPASS=password
sshpass -e scp -o StrictHostKeyChecking=no /home/MYPATH/File.import user@192.168.X.XXX:/home/MYPATH/
Run Code Online (Sandbox Code Playgroud)

请从命令中删除错误的引号:

sshpass -p "$pass" scp -o StrictHostKeyChecking=no /home/MYPATH/File.import $user@$host:/home/MYPATH/
Run Code Online (Sandbox Code Playgroud)

您还应该能够删除 周围的引号$pass。

请确保变量中没有特殊字符pass或正确转义它们(并且任何地方都没有拼写错误)。

为了简单起见,使用 ssh 命令而不是 scp 进行测试

使用scp 命令的-v或选项来检查 scp 正在尝试执行的操作。-vvv还要检查secure日志或auth.log远程服务器上

  • 我也有同样的问题。一旦我删除了密码周围的引号,它就对我有用了。 (2认同)