![无法将文件 scp 到我可以 ssh 连接的 EC2 实例](https://linux22.com/image/1346172/%E6%97%A0%E6%B3%95%E5%B0%86%E6%96%87%E4%BB%B6%20scp%20%E5%88%B0%E6%88%91%E5%8F%AF%E4%BB%A5%20ssh%20%E8%BF%9E%E6%8E%A5%E7%9A%84%20EC2%20%E5%AE%9E%E4%BE%8B.png)
我有两个 EC2 实例,它们是从同一个 AMI 创建的,而这个 AMI 是从 Amazon Linux AMI 创建的。它们以主从配置运行 mysql。安全组(“db”)配置为允许在安全组“web”下运行的实例使用端口 22。
因此,我通过 ssh 进入其中一个 Web 实例,然后通过 ssh 或 scp 进入数据库实例。这一段时间以来一直运行良好。
但是今天,我无法再通过 scp 连接到其中一个实例(主实例)。但我可以顺利通过 ssh 连接到该实例,并且 scp 和 ssh 都可以正常连接到从属实例。
使用 -vv 运行 scp 会产生几乎相同的输出,直到下面的 debug2:行,这是连接到主服务器时的最后一个输出。
debug2: exec request accepted on channel 0
Sending file modes: C0775 77 <filename>
知道发生了什么吗?我尝试重新启动实例,但没有任何变化。
更新:
/var/log/secure:
Jan 10 19:02:59 <host> sshd[1987]: Accepted publickey for <user> from xx.xxx.xxx.xxx port 33285 ssh2
Jan 10 19:02:59 <host> sshd[1987]: pam_unix(sshd:session): session opened for user <user> by (uid=0)
/var/log/audit/audit.log 中添加了大约 20 行内容,全部以res=success
答案1
我通过执行以下操作解决了此问题:
$ sudo vi /etc/ssh/sshd_config
改变了这个:
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
对此:
# override default of no subsystems
Subsystem sftp internal-sftp
然后重新启动sshd服务:
$ sudo service sshd restart
答案2
我发现只需运行 python SimpleHTTPServer 并在另一端运行 wget 来下载文件更容易。
添加 HTTP 协议,并将其添加到所有源的安全配置中
在文件所在的目录中运行以下命令
$ sudo python -m SimpleHTTPServer 80
在接收端,运行以下命令下载文件