我似乎找不到这个简单问题的答案,我需要一些合规文档。
在 CentOS 6.5 (OpenSSH 5.3p1-94.el6) 的默认安装中,用户的 SSH 会话闲置多长时间后会终止?我相信可以设置以下内容来增加空闲超时,但默认情况下它们被注释掉了。
$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
Run Code Online (Sandbox Code Playgroud)
另外,是否有一个命令可以转储当前sshd
设置的列表?我看不到任何东西man sshd
。
当我启动一个执行长时间运行的命令的 SSH 会话时,Ctrl+ C(SIGINT) 处理会发生什么?
我可以看到 SSH 会话已关闭,但我不确定谁先获得 SIGINT:是...
远程长时间运行的命令?也就是说,(a) 远程命令中的信号处理程序被调用并停止远程命令,(b) 产生它的外壳检测到命令停止,并停止 (c) 远程 sshd 检测到外壳停止,所以它关闭了连接
或者
本地 ssh 接收到信号,并关闭连接。
我认为 (1) 正在发生,但想确定一下。
我也不确定在这种情况下 shell 处理 SIGINT 会发生什么。例如,如果我...
ssh remote 'while true ; do sleep 1 ; date ; done'
Run Code Online (Sandbox Code Playgroud)
和Ctrl+ C,然后远程连接被删除。有没有办法在Ctrl+后保持活动状态的外壳下运行远程命令C?也就是说,在这种情况下,停止循环并允许我继续在远程 shell 上工作?
我正在运行以下命令,并监视另一个系统上的输出文件:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Run Code Online (Sandbox Code Playgroud)
如果我使用^C
或仅通过终止我登录的终端来终止ssh 命令,我希望远程命令也终止。但是,这不会发生:/tmp/count
无论如何都会获取所有数字 1-5,并ps -ejH
显示 shell 及其sleep
子项继续运行。
这是预期的行为吗,是否在任何地方都有记录?我可以禁用它吗?通过阅读,我希望必须使用 nohup 显式启用这种行为,而不是让它成为默认值。
我查看了 ssh 和 sshd 的手册页,但没有发现任何明显的内容,Google 向我指出了打开此行为的说明,而不是关闭它的说明。
我正在运行 Red Hat Enterprise Linux 6.2,两个系统上都有 root 登录名和 bash shell。