将自己锁定在 Amazon EC2 SSH 之外 - 此服务仅允许 sftp 连接

将自己锁定在 Amazon EC2 SSH 之外 - 此服务仅允许 sftp 连接

哦。

ForceCommand internal-sftp在摆弄以/etc/ssh/sshd_config允许root通过 SFTP 登录后,我将自己锁定在 Amazon EC2 盒子上的 SSH 之外 。

SFTP 仍然工作正常,但 PuTTY 立即死机,例如:

油灰

这里奇怪的是,SFTP 仍然工作正常,并允许我像当前一样登录root(因为我所做的更改) - 所以我打开了一个 WinSCP 窗口,我可以浏览任何我喜欢的内容并编辑内容。

当我尝试使用以下命令从另一个 Linux 机器进行连接时:

ssh -i keyfile.pem [email protected] -p [portnumber]

我得到以下回复:

This service allows sftp connections only.
Connection to [hostname] closed.

我已成功删除,ForceCommand internal-sftp但远程/etc/ssh/sshd_config运行时遇到问题service ssh restart。当我sftp使用前缀执行此操作时!,它说它有效 - 但我可以告诉它没有,因为侦听端口没有改变。

答案1

ForceCommand internal-sftp从服务器中删除/etc/ssh/sshd_config并重新启动服务器(以刷新配置文件),然后我又回来了。

答案2

sftp当我使用前缀执行此操作时!,它说它有效

有!但!在客户端执行命令,而不是在服务器上执行。因此,请注意您可能无意中在客户端上更改的内容。

SFTP 协议故意不允许客户端指定在服务器上运行的命令。它只是一个文件传输协议。

但是,您可以通过将命令写入将要执行的文件来间接触发服务器上的命令。例如,您可以将 at 作业放入/var/spool/cron/atjobs(如果您知道要在作业文件和.SEQ文件中写入什么内容 — at 假脱机格式并非完全微不足道)。您可以编辑/etc/crontab或其他一些 crontab。通常,仅限 SFTP 的用户仅限于其主目录,但由于具有对整个文件系统的 root 访问权限,没有完全 SSH 访问权限的 SFTP 实际上无法提供任何安全性,只是带来不便。

因此:

  1. 用于sftp下载/etc/ssh/sshd_config/etc/crontab.
  2. 编辑下载的文件以删除该行并添加一个以 root 身份运行(或任何您的 init 系统想要的)的ForceCommandcron 作业。service ssh restart/etc/init.d/ssh restart
  3. 用于sftp上传修改后的文件。
  4. 等待 cron 作业触发。
  5. 用于ssh登录和编辑临时 cron 作业。

相关内容