%3F.png)
У меня есть сервер назначения, работающий под управлением Ubuntu 14.04 (назовем его destserver
), и туннельный сервер, также работающий под управлением Ubuntu 14.04 (назовем его bridgeserver
), который имеет фиксированный адрес IPV4. В настоящее время я настроил его так, что при загрузке destserver
для autossh
подключения к bridgeserver
:
exec autossh -M 0 -N -R 2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR
Я использую здесь аутентификацию по ключу, поэтому указанная выше команда может быть выполнена без паролей. Теперь, когда я нахожусь на своем ноутбуке в публичной сети где-то, теперь я могу сделать с него:
ssh -t -o ProxyCommand='ssh mybridgeuser@BRIDGESERVER_IP_ADDR nc localhost 2222' mydestuser@localhost
... и это работает нормально, за исключением того, что у меня запрашивают два набора паролей:
$ ssh -t -o ProxyCommand='ssh mybridgeuser@BRIDGESERVER_IP_ADDR nc localhost 2222' mydestuser@localhost
mybridgeuser@BRIDGESERVER_IP_ADDR's password:
mydestuser@localhost's password:
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.2.0-42-generic x86_64)
...
Теперь я хотел бы сделать этот целевой сервер доступным для других людей, но я не хочу делиться никакими данными аутентификации сервера моста (который я арендую лично), и поэтому я не хочу делиться паролем mybridgeuser
. Поэтому я хотел бы установить соединение, как указано выше, за исключением того, что меня спрашивают только о пароле пользователя (например mydestuser
, ) в destserver
.
Есть ли ssh
синтаксис, который я мог бы использовать на клиенте, чтобы я мог подключиться к, destserver
используя только учетные данные пользователя из destserver
(без запроса пароля из bridgeserver
), без изменений в текущей настройке с autossh
? Если необходимы изменения в настройке, какими будут изменения в настройке - и как будет ssh
выглядеть команда на ноутбуке?
решение1
Хм, я могу ошибаться, но я только что написал это в своем init-файле:
exec autossh -M 0 -N -R :2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR
... вместо:
exec autossh -M 0 -N -R 2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR
... обратите внимание, я просто добавил двоеточие перед тем, что раньше было 2222:localhost:22
; и теперь на ноутбуке я могу просто выполнить:
ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
... и, похоже, теперь это работает, поскольку у меня запрашивается только один пароль:
$ ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
mydestuser@BRIDGESERVER_IP_ADDR's password:
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.2.0-42-generic x86_64)
...
... тогда как раньше он не позволял мне этого сделать?!:
$ ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
ssh: connect to host BRIDGESERVER_IP_ADDR port 2222: Connection refused
Я не совсем понимаю, зачем нужно было это двоеточие, поэтому мне бы хотелось прочитать правильный ответ по этому поводу...