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

时间:2015-03-13 16:16:55

标签: ssh ubuntu-14.04 scp 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/

将文件从本地服务器复制到远程服务器。远程服务器是远程服务器的副本,但是当我尝试执行此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/

有人有解决方案吗?

3 个答案:

答案 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模式下输入该密码时并不需要。