![通过网络传输文件无需密码](https://linux22.com/image/1062337/%E9%80%9A%E8%BF%87%E7%BD%91%E7%BB%9C%E4%BC%A0%E8%BE%93%E6%96%87%E4%BB%B6%E6%97%A0%E9%9C%80%E5%AF%86%E7%A0%81.png)
我是 Linux 脚本编写新手。我想每天将 Linux 机器上的某个文件复制到 FreeNAS 中,而无需输入密码。我该怎么做?我应该映射网络驱动器吗?提前致谢。
答案1
使用 rsync 和 SSH 备份
免责声明:有很多方法,这是我个人首选的方法
确保你的 SSH 已启动并运行目的地主机(取决于如何在 FreeNAS 上安装/启动 SSH - 我不知道)
sudo apt-get install openssh-server
然后,你会发现可以使用密钥文件(无需密码)登录,然后在(源)Ubuntu Linux PC 上输入以下内容
ssh-keygen -t dsa -f /home/username/.ssh/rsync_keyfile.dsa
无需设置密码,只需按两次回车键!
免责声明:我通常建议使用密码,但不建议用于脚本目的
现在我们从来源-到目的主机,在这里你必须输入密码目标用户一次
ssh-copy-id -i /home/username/.ssh/rsync_keyfile.dsa dst-user@destination-host
您可以测试它,看看它是否有效以及是否可以登录
ssh -i /home/username/.ssh/rsync_keyfile.dsa dst-user@destination-host
然后你可以使用
rsync -<rsync options> -e "ssh -i /home/username/.ssh/rsync_keyfile.dsa" /local/backup/files/* dst-user@destination-host:/remote/backup/
我建议使用-a
以及和-u
。-h
-P
这些选项告诉 rsyncArchive(选项的良好组合),仅你更新(复制)源上比目标上新的文件,使其H人类可读,并向我们展示页整个转移的进展。
如果您在脚本中使用它,请确保执行该脚本的用户是 rsync_keyfile.dsa 的所有者,否则它将不会被使用。
答案2
SSH 是一种简单的方法。您可以使用文件浏览器通过 sftp(简称 SSH FTP)连接到联网设备 - ubuntu 的文件浏览器是 nautilus,它可以做到这一点。
您可以从以下位置找到 ssh 的一些基本信息和配置这里
生成密钥并将其添加到服务器的授权密钥列表后,单击Other Locations
左侧面板底部,将弹出“连接到服务器”框,允许您通过 sftp 进行连接。
解释一下红色部分的内容:
sftp://
是传输协议。git
是服务器上的用户。我在我的服务器上创建了一个名为 git 的用户。根据您的 ssh 服务器配置,您可能只想允许服务器上的特定用户进行连接。homeserver
是我的服务器的别名,它是通过 hosts 文件配置的/etc/hosts
/home/git
是我单击“连接”时最初打开的目录。
您可以为该连接添加书签,以便随时打开它。