gpt4 book ai didi

ftp - 将 .netrc 与 sftp 一起使用

转载 作者:行者123 更新时间:2023-12-03 01:03:01 37 4
gpt4 key购买 nike

我有一些现有的脚本,其中使用 ftp + .netrc。

我现在想切换到 sftp,但它似乎不支持宏/.netrc。

还有其他选择吗?

请帮忙。

最佳答案

简单地说,您不能将 .netrcsftpscpssh 一起使用。这些产品是 OpenSSH 标准的一部分,其名称中包含关键字“secure”。像 .netrc 那样自动登录并不是一种安全的做法,并且该标准禁止这种自动化(存储密码)。肯定有一个替代方案,实际上是三个。

授权

对于前两种选择中的任何一种,您都需要设置 key 并交换它们。在您通过运行 ssh-keygen 连接的计算机上,出于您的目的,如果您不为 key 提供密码短语,则会简单得多,尽管这是有风险的。您现在在 .ssh/ 中有两个文件,一个 id_rsa 和一个 id_rsa.pub。其中,id_rsa 必须保密或受到保护(因此是密码短语)。 pub 文件实际上是一行文本。可以将这一行添加到接收主机一侧的 ~/.ssh/authorized_keys 文件中。您可以将 key 添加到文件 manually ;但还有 ssh-copy-id 快捷命令可以做到这一点,还可以处理文件权限。授权 key 后,当您以适当的用户身份连接时,您应该能够从具有私钥的计算机连接到具有授权公钥的计算机。使用 ssh -v 进行测试。如果您输入了密码,系统将提示您输入;如果您没有这样做,那么您现在已经准备好自动化了。您可以使用 ssh-agent 使私钥在 session 之间保持事件状态,同时只需输入一次密码。如果您要进行多个 ssh 跃点,则转发代理的选项将允许通过每个跃点传送来自原始来源框的 ssh-agent 的私钥。我个人认为这太过分了,因此建议不要使用密码。

现在您可以建立 sshsftpscp 连接,而无需输入任何密码或密码短语,您已准备好自动化其余的。

替代方案 1,

如果您将 .netrc 宏转换为 shell 脚本或调用一些 scp 命令的其他脚本,

是首选替代方案。这类似于使用 curlwget 自动执行所有 ftp 连接。例如:

scp -qr $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR $LOCAL_PATH_FILE_OR_DIR #download
scp -qr $LOCAL_PATH_FILE_OR_DIR $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR #upload
scp -pqr $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR $USER@$REMOTE_HOST2:$PATH_FILE_OR_DIR #mirror between separate hosts.
ssh $USER@$REMOTE_HOST chmod 644 $PATH_FILE #set permissions

替代方案 2,

正如您所提到的,使用sftp,您可以使用expects命令编写脚本,并使用batch file使用 -b 选项,或通过管道将命令传输到 sftp 中。这与 .netrc 宏有点相似,但与替代方案 1 相比没有优势。我将展示后者的示例:

#!/bin/sh
echo "OK, starting now..."
sftp -b /dev/fd/0 remotehost <<EOF
cd pub
ascii
get filename.txt
bye
EOF

替代方案 3,

使用 sftp 程序,该程序允许您存储密码等连接参数,从而破坏了 SSH 标准。例如使用 cyberduck和 AppleScript,或 FileZilla和一个队列。

进一步说明:

有一个 ~/.ssh/config 文件 you can use为主机名提供更短的名称,设置转发参数、默认目录、默认用户名以及每个主机的特定身份。我还喜欢 scp-l 选项,它将我的传输速率限制在更合理的水平。

附注您可能会认为有一个工具可以将 .netrc 宏转换为(替代 1 样式)shell 脚本。但我什么也没找到。这是一个微小的利基商机吗?

关于ftp - 将 .netrc 与 sftp 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1360672/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com