有没有办法自动将密码传递给ssh.我想自动ssh到服务器而不使用公钥认证或期望脚本,通过某种方式获取ssh从stdin或文件读取密码.
它必须是这样的原因是我想使用作为cron作业运行的rsync/ssh将我的文件备份到服务器.此服务器在对我进行身份验证后安装我的主目录,因此使用公钥身份验证不起作用,因为〜/ .ssh在登录成功后才可用.expect(1)是不可能的,因为我想将它作为一个cron作业运行,并且由于cron作业不在终端下运行,所以expect/ssh的组合不起作用.我没有对该服务器的root访问权限,并且很难让管理员对其中的工作方式进行任何更改.
期望是不可能的,因为我想将它作为一个cron工作运行,并且由于cron作业不在终端下运行,期望/ ssh的组合不起作用
您可以从cron运行expect脚本,至少可以使用Python的"pexpect"等库.我刚刚对此进行了测试以确认,从cron运行pexpect scp/ssh脚本,我能够成功地从运行在cron中的Python脚本中scp一个文件.
示例代码:
#!/usr/bin/python import pexpect FILE="/path/to/file" REMOTE_FILE="" USER="user" HOST="example.com" PASS="mypass" COMMAND="scp -oPubKeyAuthentication=no %s %s@%s:%s" % (FILE, USER, HOST, REMOTE_FILE) child = pexpect.spawn(COMMAND) child.expect('password:') child.sendline(PASS) child.expect(pexpect.EOF) print child.before