当前位置:  开发笔记 > 运维 > 正文

不使用公钥认证或期望自动化SSH(1)

如何解决《不使用公钥认证或期望自动化SSH(1)》经验,为你挑选了1个好方法。

有没有办法自动将密码传递给ssh.我想自动ssh到服务器而不使用公钥认证或期望脚本,通过某种方式获取ssh从stdin或文件读取密码.

它必须是这样的原因是我想使用作为cron作业运行的rsync/ssh将我的文件备份到服务器.此服务器在对我进行身份验证安装我的主目录,因此使用公钥身份验证不起作用,因为〜/ .ssh在登录成功后才可用.expect(1)是不可能的,因为我想将它作为一个cron作业运行,并且由于cron作业不在终端下运行,所以expect/ssh的组合不起作用.我没有对该服务器的root访问权限,并且很难让管理员对其中的工作方式进行任何更改.



1> Jay..:

期望是不可能的,因为我想将它作为一个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

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有