通常 sshpass 会与 scp 组合使用。虽然 sshpass 可以直接传递密码,但却可能引发目录权限问题。
由于笔者需要使用 scp 将远程主机(Windows 系统)的文件下载到本地(Linux 系统),而win系统不像linux系统那样方便用RSA验证,所以需要直接输入密码。用 echo 的方式是不行的,所以尝试用 sshpass 的方式。
sshpass 方式确实能够达到效果,成功连接并将远程主机上的文件下载到本。
问题出在下载的文件权限上。虽然在SSH中可以查看到下载下来的文件,但在SFTP中却提示没有权限(SFTP是没有问题的,不安装sshpass即是正常的)。
使用 ls -l 查看下载目录,会发现权限中,使用 sshpass 后生成的目录,会比正常的文件少一位:
drwxrwx- 2 root root 38 4月 27 11:05 AAA
drwxrwx-+ 4 root root 27 4月 27 09:54 BBB
drwxrwx-+ 3 root root 20 4月 27 09:57 CCC
有一些附加的权限,在使用sshpass后会失效。