LAMP堆栈安全问题 – 上传文件到服务器

我在家用机器上运行Ubuntu 9.10桌面。 我需要定期从本地机器上传文件到我的networking服务器。 我的服务器正在运行Ubuntu Server LTS。

我想我的服务器是安全的,只运行LAMP堆栈,可能还有一个电子邮件服务器。 我不(理想)想要有FTP或任何可以让(更多)有知识的黑客能够侵入我的服务器的东西。

任何人都可以推荐我可以从本地机器发送文件到服务器?

这似乎是一个简单/微不足道的问题,但是我对Linux相对来说比较新,而且之前我的Windows服务器机器被严重黑客入侵,所以迁移到了Linux,这就是为什么我对安全性的关注。

[编辑]

这样做似乎有很多方法(从迄今收到的答复来看),但似乎没有明确的赢家。 因此,我正在增加更多的信息,希望明确的赢家(就最佳实践而言)将会出现。

  1. 我想自动化 – 即从一个shell脚本作为一个cron作业运行。
  2. 我很担心安全性,所以我不想在脚本中以纯文本formsinput密码,也不希望密码发送未encryption
  3. 客户端和(远程)服务器都是基于Debian的,所以希望文件权限将保存在副本中。

    一世。 如果这是不可能的,谁将成为复制文件的默认所有者? 上传的文件将被另一个脚本(在服务器上)读取。 上传脚本和处理脚本之间的关系(文件权限)应该是什么?

rsync是在服务器之间传输文件的方便方式。 通过SSH开箱即用(并支持基于密码的无密码SSH连接)。

您可以从本地复制到远程或从远程复制到本地等。例如:

# copy files to another server rsync -avz /mnt/myfiles/ [email protected]:/srv/myfiles 

在远程服务器上最好使用非root帐户,并设置authorized_keys条目,以便不需要input密码。 直接SSH到另一台服务器的根目录不是一个好主意 – 如果您需要在远程服务器上的root权限,请改为从该端执行rsync。 如果你认为你需要两个服务器的root权限,你可能不需要:查看rsync的--fake-super选项。

我已经在网上看了一些HOWTOs,很多人推荐坦率的坏习惯或过时(推荐authorized_keys2,rsa等)。 这一个我build议,这是很好的安全明智的: http : //troy.jdmz.net/rsync/index.html

其他,非常方便的国际海事组织,方式是安装您的远程目录作为本地使用sshfs和复制文件的任何其他。

 sshfs user@remotemachine:/remote/dir /local/dir cp /one/file /local/dir/. 

你可能已经连接到服务器使用ssh ..所以使用scp或sftp使用SSH作为协议

 scp localfile [email protected]:/path/to/place/localfile 

它会提示你input你的密码

如果你希望它变得更简单,更安全。用ssh键来查看login

编辑

这里是sftp ..一旦你进入,就像正常的ftp一样工作

  sftp [email protected] > cd /dir/dir2/dir3 > put localfile 

我会使用scp,如果你想自动化..所以要创build一个sshkey

 ssh-keygen -t dsa 

如果你想自动化它..我build议不使用passpharse

现在你想复制密钥

 ssh-copy-id [email protected] 

然后,你可以在使用该密钥的情况下用该用户的密码进行sshlogin。 你也可以使用没有密码的同一个scp账户,但是只能使用你创build的用户的那个密钥。

如果你需要一个GUI而不是命令行选项,那就使用SFTP。 FileZilla是一个非常容易使用和拖放的客户端,当然,SFTP会通过SSH连接执行所有操作。

再次,连接到远程服务器上的非root用户帐户 – 您可以通过向远程机器添加authorized_keys条目来设置无密码login。 您需要Pageant(附带PuTTY)来pipe理Windows上的密钥。