这是我找到的用于输入sftp协议密码的预期脚本示例。现在,我想通过脚本将文件从一个ec2实例复制到另一个实例。后来我想使用sftp在亚马逊服务器和另一台外部服务器之间传输文件,所以请不要给我任何特定的亚马逊来解决这个问题。当我运行此脚本时,连接被拒绝,我相信这是因为我需要为.pem文件提供rsa密钥,但是我不知道如何执行此操作或修改我的脚本来执行此操作。我似乎找不到这个具体问题的答案。任何帮助将不胜感激。谢谢。
#!/usr/bin/expect
spawn sftp ec2-user@mywebsite.com
expect "password:"
send "[rsa private key]\n"
expect "sftp>"
send "cd \n"
expect "sftp>"
send "put /home/ec2-user/[file]\n"
expect "sftp>"
send "exit\n"
interact
答案 0 :(得分:1)
spawn sftp -i /path/to/pem/file ec2-user@mywebsite.com
并非所有sftp实现都支持 -i 选项来传递您的私钥。在这种情况下使用:
spawn sftp -oIdentityFile=/path/to/pem/file ec2-user@mywebsite.com
-o 可用于以ssh_config中使用的格式将选项传递给ssh。
有关详细信息:man sftp