我无法 scp,其他服务器只接受 sftp 连接。
目前,我正在尝试做
sftp [email protected]:/files> put -r ~/
-i keyname
不起作用,只能用 来解决illegal option -- i
。
答案1
答案2
使用传统方法将您的公钥复制到服务器。
在服务器上:
.ssh
如果不存在则创建:
[[ !-d "${HOME}/.ssh" ]] && mkdir -p "${HOME}/.ssh"
- 实现公钥:
cat /path/to/public_key.pub >> “${HOME}/.ssh/authorized_keys”
- 设置适当的权限。OpenSSH 对相关文件的权限非常挑剔:
chmod go-rwx "${HOME}" "${HOME}/.ssh/authorized_keys"
之后,您应该能够使用私钥从客户端登录。要自动执行传输,您需要使用批处理文件,它只是一个包含要执行的命令列表的文本文件。
echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt sftp -b /tmp/batchfile.txt -oIdentityFile=/path/to/private_key 用户@主机
或者,您可以随意创建一个 ssh_config 格式的 ~/.ssh/config 文件,以便以后只需输入以下内容:
sftp -b /tmp/batchfile.txt 主机
样本内容~/.ssh/config
主机 the_hostname 用户 user_name IdentityFile /path/to/private_key
答案3
我最近遇到了这个问题,在我的 MacBook 默认终端设置中,对我有用的是以下内容
sftp -i ./privateFilePath.key [email protected]
请注意,您可能会被提升未受保护的私钥文件!消息,在这种情况下,您需要运行此命令以确保其他人无法访问您的私钥。
chmod 600 privateFilePath.key
在某些情况下你需要须藤在命令前面,这仅当您在管理员保护的目录中工作时才有效
希望这对你有帮助 :)
答案4
如果你想在 ec2 上设置 sftp,本文可能有帮助