Перейти к содержимому

Как использовать sshpass для цепного соединения?

3

У меня есть две машины клиента, $gatewayа $serverвторая доступна только с первой. Аутентификация с открытым ключом недоступна в обеих системах. Итак, чтобы выполнить некоторые $commandна сервере, мне нужно запустить, ssh $gateway ssh $server $commandа затем ввести два пароля. Я могу использовать sshpass, но он будет обрабатывать только первое соединение, и мне все еще нужно ввести второй пароль вручную.

Как сделать полностью неинтерактивный (без ручного ввода паролей) ssh доступ к серверу?

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

2 916 просмотров
Equidamoid спросил 13 лет назад
E 174

1 ответ

4
Принятый ответ

Пытаться:

ssh -oProxyCommand="ssh -W %h:%p $gateway" $server command 

Например:

ssh -oProxyCommand="ssh -W %h:%p albert@gateway.uibk.ac.at" root@hidden.uibk.ac.at command 

Это будет использовать прокси-соединение ssh с $serverдругой sshкомандой без фактического создания туннеля. Это гарантирует, что оба клиента ssh работают локально, тем самым используя sshpass.

Большой! Спасибо! (для использования с sshpass нужно просто заменить ssh на sshpass -p<corresponding_password> ssh) </corresponding_password>

Equidamoid · 13 лет назад · 1

Упс, я нашел что-то вроде ssh $ gateway rsync $ file $ server:. Есть идеи, как заставить это работать?

Equidamoid · 13 лет назад · 0

Если $ file является локальным, вы можете использовать опцию -e rsync, чтобы использовать другую команду ssh. Просто проверьте руководство, используя man rsync.

Albert Peschar · 13 лет назад · 0

Нет, это не так. Он размещен на $ gateway. Соединение localhost <-> $ gateway очень медленное, поэтому «загрузить файл на мой ноутбук и затем поместить его на сервер» не вариант

Equidamoid · 13 лет назад · 0

sshpass -p $ пароль $ gateway rsync -e" sshpass -p $ пароль "$ file $ server:?

Albert Peschar · 13 лет назад · 0
Albert Peschar ответил 13 лет назад
A 183