Назад | Перейти на главную страницу

SSH-туннель с паролем только назначения (вместо двух паролей)?

У меня есть целевой сервер под управлением 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 команда на ноуте как выглядит?

Хм, я могу ошибаться в этом, но я просто написал об этом в своем файле инициализации:

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

Я не уверен, зачем понадобилось это двоеточие, поэтому я все же хотел бы прочитать правильный ответ об этом ...