指定在 authorized_keys 中使用的转发端口

指定在 authorized_keys 中使用的转发端口

我当前的 SSH 情况。

我有几个 SSH 客户端和一个 SSH 服务器。我向客户端部署了一个 autosshserver.script。该脚本创建了一个反向 SSH 隧道(另外它转发了端口 22 和 5900)到服务器。另一方面,我可以通过服务器连接到客户端。

我现在的问题是控制客户端已经使用的端口。我正在寻找一种方法来在服务器上指定这些 PORT_Variables。因此,我总是可以部署相同的脚本,但更改服务器端要在授权密钥中使用的端口(例如)。

这些是来自 autosshscript 的相关片段。

##### VARIABLES ###########################################   

PORT_SSH="{{  PORT_SSH  }}"
PORt_VNC="{{  PORT_VNC  }}"

AUTOSSH="/usr/bin/autossh"

AUTOSSH_PARAMS="-M 0 -f -2 -4 -N -C -n -T -p $HOST_PORT"

AUTOSSH_ADV_PARAMS="-o \"ServerAliveInterval 30\" -o \"ServerAliveCountMax 2\" -o \"ExitOnForwardFailure yes\" -o \"PubkeyAuthentication yes\" -o \"PasswordAuthentication no\" -o \"UserKnownHostsFile /dev/null\" -o \"StrictHostKeyChecking no\""

LOCAL_USER_KEYFILE="-i /home/FOOSSH/.ssh/id_rsa"

TUNNEL="-R 0.0.0.0:$(PORT_SSH):127.0.0.1:22 -R 0.0.0.0:$(PORT_VNC):127.0.0.1:5900"

HOST_LOGIN_USER="FOOSSH"

HOST_NAME="ssh.FOOSSH.eu"

##### LOGIC ###############################################
su -l $LOCAL_USER -m -c "$AUTOSSH \
$AUTOSSH_PARAMS \
$AUTOSSH_ADV_PARAMS \
$LOCAL_USER_KEYFILE \
$TUNNEL \
$HOST_LOGIN_USER@$HOST_NAME" 

提前感谢你的帮助。:)

答案1

所以这就是解决方案。不是使用 SSH 内置功能,而是创建一个变通脚本。

脚本的算法:

  • diff <(当前本地公钥) <(服务器端公钥) 并阅读注释,它定义了隧道将使用的端口。
  • 将变量写入 autossh 脚本。

相关内容