我正在使用 SSH 连接创建本地模拟器(未连接到互联网)。我已经在特定范围的端口号上启动 sshd,并将一系列设备 NATing 到这些端口号。我必须找到当前连接的端口号。
操作系统 CentOS 5.5 OpenSSH 6.1
我已经完成了以下工作。它适用于正常使用(手动用户)。但是在尝试严格测试(自动)时,似乎有时无法找到端口号。
#!/bin/bash
WHOINFO=`who -m`
USERNAME=`echo $WHOINFO | awk 'NR==1{print $1}'`
PTSNUMBER=`echo $WHOINFO | awk 'NR==1{print $2}'`
USERSTR=$USERNAME"@"$PTSNUMBER
PID=`ps -eLf | grep $USERSTR | awk 'NR==1{print $3}'`
if [ -z "$PID" ];
then
exit
fi
PORTSTR=`netstat -natp | grep $PID | awk 'NR==1{print $4}'`
PORTNUMBER=${PORTSTR//*:/}
echo $PORTNUMBER
最佳答案
OpenSSH 服务器会设置变量$SSH_CLIENT
,其中包含当前ip、客户端端口和服务器端口,以空格分隔:
$ echo "$SSH_CLIENT"
127.0.0.1 59064 22
要获取当前 session 连接的端口号,您可以使用 echo ${SSH_CLIENT##* }
。
关于linux - 查找当前连接的端口号 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16456152/