远程服务器上的 SSH 进程发生了一些问题,因此现在在尝试连接时会出现以下错误:
kex_exchange_identification: read: Connection reset by peer
看来 SSH 守护进程只需要重新启动即可。
但问题是除了通过 SSH 之外无法访问服务器。唯一的选择是突然重新启动,这是不可取的。
但是,远程服务器的文件系统是通过 sshfs 在本地安装的,并且可以继续正常工作。
有没有办法使用现有的 sshfs 会话在远程运行命令?
有关的:
- 通过 sshfs 安装后如何在主机上运行 ssh 命令并避免 2FA?— 因被声明重复而关闭
- 使用已建立的 SSH 通道— 仅当您提前计划时才有效
答案1
sshfs
是一个“文件系统”,并且可以完成文件系统的大部分功能。
根据您sshfs
可以访问的目录,您可以:
- 编写一个脚本来重新启动
sshd
(使用完整路径,/bin/ls
而不是ls
), - 将其存储在服务器上(通过
sshfs
) - 为远程系统手工编织一个
batch
、at
、 或crontab
队列条目来调用脚本。 - 将您的作业放入队列目录中。
- 等待。
您在远程服务器上的用户名是否sudo
已启用?在运行 Linux 上研究at
、batch
、 和的工作原理cron
,然后再在远程服务器上破坏它们。
OTOH,无法通过 SSH 访问的日益不可取的情况最终可能超过重新启动的不可取的情况。
利用这段时间重新设计您的流程。
就在我对远程系统进行俄罗斯轮盘赌更改之前,我将一个at
作业排入队列,该作业恢复旧的但有效的配置,以在“现在 + 15 分钟”运行。然后,我有 15 分钟的时间扣动扳机,“找出答案”,重新连接/登录,然后取消作业at
。如果我不这样做/不能,旧配置将在 15 分钟内恢复。
当然,这需要了解远程系统、所做的更改(apt-get changelog packagename
)以及编写撤消脚本。它还有助于缩小“撤消”的范围 - 许多应用程序更新不会带来连接/访问的风险,并且(可能)不需要撤消。