我正在编写一个 bash 脚本,该脚本将从 cron 调用以每天一次从远程服务器中提取文件。我正在使用 SSH,因此我需要自动提供密码,因为它在无人值守的情况下运行。到目前为止,这是我想出的:
1:通过创建DSA密钥对ssh-keygen
2:将公钥复制到远程服务器
3:配置ssh-agent
处理密钥密码
我的问题是:这一切都是必要的吗?这是最简单/最好的方法吗?这是一项非常简单的任务,因此我希望在保持合理安全级别的同时使配置尽可能简单。
附加信息:
- 未运行 rsync 守护进程
- 两台机器都是 Ubuntu linux
如果不使用ssh
and ,你所做的任何事情都是不安全的sshd
。
规范的方法是使用scp
甚至更好,rsync
以及没有密码的 ssh 密钥。
或者,创建一个仅用于复制的密钥,并在远程端编辑 authorized_keys 文件以仅包含您需要运行的命令和密钥,例如:
# remote_server:/home/copyuser/.ssh/authorized_keys:
command="[...]" ssh-rsa KEY_HERE user@host
Run Code Online (Sandbox Code Playgroud)
也scponly
有。如果你创建了一个用户,将他们的 shell 设置/etc/passwd
为/usr/bin/scponly
,他们将不被允许登录,但按照正常权限复制文件。