我需要使我的网页与本地目录保持同步。一个非常有效的工具是lftp,我将其与脚本一起使用:
#!/bin/bash
HOST='ftp.remote.it'
USER='username'
PASS='password'
TARGETFOLDER='.'
BASEFOLDER='/home/my/folder/'
SOURCEFOLDER='_site'
cd $BASEFOLDER || exit
lftp -f "
open $HOST
user $USER $PASS
mirror --reverse --only-newer --ignore-time --delete \
--verbose $SOURCEFOLDER $TARGETFOLDER
bye
"
Run Code Online (Sandbox Code Playgroud)
通过使用该选项,--delete我确保当我在本地删除文件时,相应的文件也会被远程删除。但是,在网站上,我放置了并非来自本地网站的其他内容,并且在进行更新时我不想删除这些内容(其效果是,--delete本地文件夹中不存在的远程文件夹和子文件夹上的所有内容都是已删除)。
解决方案可能是保留上次更新时本地文件夹中存在的文件列表;然后,通过将本地目录与列表进行比较,我可以获得已删除文件的列表。这样,本地网站的镜像分两步:首先删除本地删除的文件对应的网站上的文件,然后使用lftp 不带选项的方式上传所有更新的和新的文件--delete。
然而,令我惊讶的是,我发现没有办法让lftp(或任何其他ftp客户端)远程删除文件列表从文件中获取列表。
server 2008 中内置的命令行 ftp 客户端不支持被动模式
所以我使用这些命令来允许出站 ftp(没有这个它就会停止)
1)打开防火墙的21端口
netsh advfirewall firewall add rule name="FTP (no SSL)" action=allow protocol=TCP dir=in localport=21
2) 激活 FTP(又名状态 FTP)的防火墙应用程序过滤器,它将动态打开数据连接端口
netsh advfirewall 设置全局 StatefulFtp 启用
但是在 server 2008 r2 中,这些命令似乎有效,但它不影响出站 ftp,它会停止
我不想使用 alt 客户端
我想用更安全的系统替换 FTP 访问。以纯文本形式发送没有加密的密码是不可接受的,而且随着单点登录的增长,每天都变得越来越不可接受。
问题:我需要支持 Linux、Windows 和 OS X 的东西,并且服务器需要在 Windows 上运行。
编辑:它还需要根据预先存在的 Windows 凭据对用户进行身份验证。
我正在尝试构建一个 shell 脚本来自动将多个软件包安装到 Ubuntu 10.04 服务器上,但我在使用 proftpd-basic 时遇到了问题。
我正在使用命令行
apt-get -qy install proftpd-basic >/tmp/install.log
Run Code Online (Sandbox Code Playgroud)
对于大多数软件包,这种方法可以正常工作,但是 proftpd-basic 似乎需要一些交互(它询问是否执行 inetd 或独立安装)。
我是否可以以某种方式在命令行上预先选择此选项,因为我不希望用户被这个问题困扰?- 有关信息,如果重要的话,我想选择“独立”选项。
编辑:
该过程的交互部分不仅需要简单的是/否答案,还需要我使用箭头键导航到我想要的选项,需要我按 Enter 进行选择。这可能对解决这个问题有一些影响。
我发现我的 Webmin 没有配备 vsftpd 模块来配置 vsftpd。我在他们的网站上发现他们有一个下载 tarball。我下载了它,但不知道将这个 tarball 添加到 webmin 配置中的正确步骤是什么。
如果重要的话,我正在运行带有 Webmin 1.510 的 Ubuntu Server 9.10。
我在 CentOS 5.5 中的两台服务器上安装了 vsFTPd ,并将此规则添加到它们的iptables:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
看起来这还不够,因为当我尝试将文件从一台服务器上传到另一台服务器时,我得到了以下结果(IP 地址被屏蔽):
# ftp 99.99.99.99
Connected to 99.99.99.99 (99.99.99.99).
220 (vsFTPd 2.0.5)
Name (99.99.99.99:root): vinny
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (99,99,99,99,107,74)
ftp: connect: No route to host
Run Code Online (Sandbox Code Playgroud)
我在网上找到了几篇关于我必须添加到的第二条规则的文章iptables,但我没有找到正确的语法。能否请你帮忙?
附:我默认安装了 vsFTPd /etc/vsftpd/vsftpd.conf,如果可能的话,我不想更改它的配置文件 ( …
我可以使用用户名 root 和用于 root ssh 访问的相同密码通过 ftp 访问我的 ubuntu 框。
我似乎无法通过 ssh 使用其他可以正常使用的用户名 ftp 进入框。我试过在 /etc/ 中寻找 .vsftpd 之类的文件,但还没有找到乐趣,我是在找对的树吗?
谢谢
是否可以使用 Proftpd 隐藏目录?
特别是 .svn 目录。
有HideFiles但没有HideDirectories指令。HideFiles 的问题在于它与完整路径不匹配。
<Directory /home/ftp_user/my_project >
# Despite trying to hide this directory it still shows up
# as /.svn in the ftp client.
HideFiles "^\.svn"
<Limit ALL>
allowuser ftp_user
</Limit>
</Directory>
Run Code Online (Sandbox Code Playgroud)
还有另一种隐藏目录的方法吗?
我一直在进行大量搜索,每次都学到了一些东西,但还没有找到解决我的问题的方法。
我有 vsftpd 设置,使用 SSL/TLS 我让它按照我的需要工作,但我无法应用下面的 iptable 规则。主要是 PASV 模式不起作用。随着iptables -F一切正常。只要我应用下面的规则,它就会连接,但客户端(CuteFTP)尝试进入 PASV 模式,它会超时。
我的ip表规则如下:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# ssh
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# web
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# ssl
#-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# subversion
-A INPUT -p tcp -m tcp --dport 3690 …Run Code Online (Sandbox Code Playgroud) 我有一台 CentOS 5.5 服务器。如何使用 SSH 获取服务器上所有 FTP 用户的列表?
ftp ×10
centos ×2
ssh ×2
ubuntu ×2
apt ×1
automation ×1
connection ×1
iptables ×1
linux ×1
mirroring ×1
proftpd ×1
security ×1
svn ×1
ubuntu-10.04 ×1
ubuntu-9.10 ×1
vsftpd ×1
windows ×1