我在使用 sshpass 进行端口转发命令时遇到问题。问题是它在一台服务器上工作而在另一台服务器上不起作用。两者都是 Debian 7 x64 机器。
sshpass -p password ssh -f -D 0.0.0.0:2002 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=debug [email protected] -T -N
此命令在服务器 1 上运行没有问题,但在服务器 2 上不起作用。
调试失败服务器的输出:
Authenticated to 5.5.5.5 ([5.5.5.5]:22).
debug1: Local connections to 0.0.0.0:2002 forwarded to remote address socks:0
debug1: Local forwarding listening on 0.0.0.0 port 2002.
debug1: channel 0: new [port listener]
debug1: forking to background
工作服务器的调试输出:
Authenticated to 5.5.5.5 ([5.5.5.5]:22).
debug1: Local connections to 0.0.0.0:2002 forwarded to remote address socks:0
debug1: Local forwarding listening on 0.0.0.0 port 2002.
debug1: channel 0: new [port listener]
debug1: forking to background
debug1: Entering interactive session.
两台服务器上的 sshpass 和 ssh 二进制文件是相同的。我已经使用 md5sum 检查过这一点。
有谁知道可能出了什么问题吗?我在试图解开这个谜团时失去了理智。
答案1
长话短说
这对我有用:
sshpass -p password nohup ssh -f ... >/dev/null
嗯,我也快失去理智了。
导致您的 Debian 主机之间的差异sshpass工作与否取决于CPU核心的数量。该问题出现在单核主机上。和谁玩斯特雷斯表明sshpass进程收到后被系统杀死叹息。在多核主机上,分叉SSH进程有足够的时间来设置叹息处理程序,这样它就不会被杀死。
作为解决方法,您可以使用诺哈普要运行的实用程序sshpass所以它没有被杀死叹息。