我需要将位于多台服务器上的 3-4 个文件传输到中央服务器。我目前从这些服务器手动“scp”复制中央服务器上的文件。
请建议我如何才能自动执行该操作而不要求输入密码。我知道我可以通过使用“ssh-keygen”配置“无密码”身份验证来实现,但这不太安全,而且我们的组织也不允许这样做。我也使用过“sshpass”,但“sshpass”在脚本中显示了我的密码,这又是一个安全隐患。
请建议如何向“sshpass”提供加密密码以解决我的问题。
答案1
对于 sshpass,您可以使用 gpg 加密您的密码,如本文底部所述:https://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/
不过,我要在这里回应@MadHatter 的评论作为答案:贵组织中的某个人需要接受有关使用密钥进行无密码登录的培训。他们是不是不安全,并且比任何类型的密码登录都安全得多。
答案2
回复@MadHatter 的评论的评论太长了:
经常被忽视的是,该~/.ssh/authorized_keys
文件支持许多选项来限制允许使用特定密钥。
请检查man 8 sshd
对于所有选项,但通常可以通过限制特定的(无密码)ssh 密钥对来完全减轻许多可察觉的风险:
- 只执行特定操作
command=
- 仅允许一组特定的远程主机访问
from="pattern-list"
- 禁用交互式登录会话
no-pty
。