![网络主机不支持公钥认证。如何避免输入密码?](https://linux22.com/image/812361/%E7%BD%91%E7%BB%9C%E4%B8%BB%E6%9C%BA%E4%B8%8D%E6%94%AF%E6%8C%81%E5%85%AC%E9%92%A5%E8%AE%A4%E8%AF%81%E3%80%82%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E8%BE%93%E5%85%A5%E5%AF%86%E7%A0%81%EF%BC%9F.png)
不幸的是,我的网络托管计划不允许公钥认证。显然,此方法仅适用于 VPS 和专用服务器客户。
我已经使用 Deja-Dup 备份了我的 Ubuntu 11.10 机器,并且正在使用 rsync 将备份文件发送到我的网络主机。
我想使用脚本自动执行此过程,但由于我无法使用公钥认证,因此每次启动该过程时我都不得不手动复制和粘贴我的(强)SSH 密码。
有办法解决这个问题吗?如果有,怎么做?
答案1
如果你需要输入密码,则必须通过expect
,因为 ssh 要求密码来自终端。这里这是一个示例预期脚本。
有可能主机禁用了公钥认证,但这需要他们故意关闭它(在PubkeyAuthentication No
内/etc/sshd/sshd_config
)。他们这样做没有任何技术原因,纯粹是为了市场细分。
我建议你首先尝试使公钥认证工作。关注此程序生成并上传密钥。如果出现问题,请随时在此处询问;如果您告诉我们您尝试了什么以及收到哪些错误消息,我们可能会提出解决方法。如果您遇到问题,请发布 sshd 配置(如果/etc/sshd/sshd_config
Web 主机运行的是 Ubuntu,则可能在另一个位置,例如/etc/sshd_config
如果主机运行的是其他发行版),以及 的输出ls -ld ~ ~/.ssh; ls -l ~/.ssh
。