如何通过SSH接管远程Linux机器Machine A上PID 123的Shell进程
如何接管远程Linux机器上的Shell进程
当然可以实现!你可以借助reptyr这个实用工具,远程接管Machine A上PID为123的Shell进程,具体操作步骤如下:
操作步骤
第一步:SSH连接到Machine A
先从Machine B的终端建立到Machine A的SSH连接:ssh your_username@machine_a_hostname_or_ip把
your_username替换成Machine A上的用户名,machine_a_hostname_or_ip替换成Machine A的主机名或IP地址。第二步:安装reptyr(如果未安装)
检查Machine A是否已安装reptyr,直接输入reptyr --version验证。如果没有安装,根据系统包管理器执行对应命令:- Debian/Ubuntu 系列:
sudo apt update && sudo apt install reptyr - RHEL/CentOS/Fedora 系列:
sudo dnf install reptyr # 或者用 yum,取决于系统版本
- Debian/Ubuntu 系列:
第三步:切换到进程所属用户
reptyr需要以目标进程的所属用户身份执行(避免权限问题),如果当前SSH用户不是进程所属用户,执行:su - target_process_username # 或者用 sudo 切换 sudo -u target_process_username bash把
target_process_username替换成PID 123进程的所属用户名。第四步:接管目标进程
执行以下命令完成接管:reptyr 123执行后,当前的SSH会话就会接管PID为123的Shell进程,你可以看到原Shell的历史输出,也能直接在这个会话中输入命令操作。
注意事项
- 确保你拥有足够的权限:要么是目标进程的所属用户,要么具备sudo权限,否则无法接管进程。
- 如果目标Shell正在执行阻塞式命令(比如
top或者一个长时间运行的脚本),接管后需要先退出该命令才能正常操作Shell。 - 如果你原本的Shell是在
screen或tmux中启动的,也可以通过重新连接对应的screen/tmux会话来恢复,但reptyr的优势是无需提前配置,适用于任何已运行的Shell进程。
内容的提问来源于stack exchange,提问作者Agnel Kurian
相关产品推荐
相关产品推荐

