Да, это называют GatewayPorts
в SSH. Выборка от ssh_config(5)
:
GatewayPorts
Specifies whether remote hosts are allowed to connect to local
forwarded ports. By default, ssh(1) binds local port forwardings
to the loopback address. This prevents other remote hosts from
connecting to forwarded ports. GatewayPorts can be used to spec‐
ify that ssh should bind local port forwardings to the wildcard
address, thus allowing remote hosts to connect to forwarded
ports. The argument must be “yes” or “no”. The default is “no”.
И можно использовать localhost
вместо M
в передаче, поскольку Вы передаете той же машине, как Вы - SSH-луг к - если я понимаю Ваш вопрос правильно.
Так, команда станет этим:
ssh -L 2222:localhost:8888 -N -o GatewayPorts=yes hostname-of-M
и будет похож на это в netstat -nltp
:
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 5113/ssh
Теперь любой получающий доступ к этой машине в порте 2 222 TCP будет на самом деле говорить с localhost:8888, как замечено в машине M. Обратите внимание, что это не то же как плоскость, передающая для портирования 8888 из M.
Вероятно, лучший способ состоял бы в том, чтобы скомпилировать новую версию gcc для всех машин. Можно сделать это со сценарием (lfs, делает это). Необходимо быть "безопасным" копированием, вставкой и затем запущением скрипта из временной учетной записи через ssh.
Вы могли также попытаться обновить свой repos, чтобы сделать, чтобы Centos установил их для Вас. Centos мог бы попытаться обновить Вашу всю систему все же.
Кроме того, Вы использование -std=c++11
? Если так, Вы могли бы хотеть попробовать -std=c++0x
.
Проблема все еще актуальна для меня, и я нашел хорошее решение для CentOS - Devtoolset https://www.softwarecollections.org/ ru / scls / rhscl / devtoolset-3 /
Он предоставляет текущие версии GCC и некоторые другие инструменты для RHEL / CentOS 6/7.