Как ssh на сервер (D3) через прокси-сервер (D2) из ​​моего локального (D1) [dубликат]

I SSH на множество разных серверов каждый день, а некоторые из них имеют разные структуры файловой системы для своих веб-сайтов. Каждый раз, когда я меняю сервер, мне приходится работать там, где я собираюсь получить файлы, которые я действительно хочу (потому что очень редко я хочу быть в ~).

Я использую Fabric файлы для автоматизации всех моих действий (нажатие на git, автоматическое SSH на сервер, чтобы вытащить из git, перезапуск веб-приложения, изменение зависимостей и т. д.), поэтому мне было интересно, не могу ли я сказать, что я хочу, чтобы SSH правый каталог, чтобы я мог запустить fab ssh и быть в обычном сеансе SSH, как раз в нужном месте и сразу начать работать.

Это не о Fabric; пожалуйста, проигнорируйте его. Ткань только запускает команду команд. Мой аргумент заключается в команде ssh. Вот, что я буду говорить, чтобы Fabric работал.

Итак, как я могу получить ssh до cd в конкретный каталог при входе в систему?

Примечание: это не может быть сервера или пользователя. У меня есть несколько сайтов под одним пользователем на некоторых серверах, поэтому что-то в ~/.bashrc не будет работать для меня.

8
задан 25 February 2013 в 18:32

2 ответа

Ну, я знал, что могу запустить что-то при входе в систему, но я знал, что он выйдет сразу после запуска. Теперь я помню, что я могу запускать столько, сколько мне нравится на удаленном сервере. Вы можете просто соединить команды вместе!

ssh user@server -t "cd /websites/website ; /bin/bash"

Теперь я могу просто сказать, что ткань это сделает, и мы уехали. Простой.

Я сказал, что это не имеет ничего общего с Fabric, но вот и новая часть моего сценария на ткани, основанная на выше:

def ssh(): ''' SSH into the remote server at the correct directory ''' local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % { 'server': server_host, 'port': server_port, 'remote_dir': remote_dir, })

Я ссылаюсь на один и тот же сценарий, поэтому переменные (server_host, server_port и remote_dir) меняются с сайта на сайт.

Поскольку Fabric может обрабатывать исходящее соединение, вы также можете просто выполните это:

def ssh(): ''' SSH into the remote server at the correct directory ''' run('cd %s ; /bin/bash' % remote_dir)

Это работает, но вывод добавляется в строку из Fabric. Это сделало подсказку более 80 символов длинной, и пока у меня есть тонны разрешения, это слишком много для меня:)

8
ответ дан 17 July 2018 в 20:25

Ну, я знал, что могу запустить что-то при входе в систему, но я знал, что он выйдет сразу после запуска. Теперь я помню, что я могу запускать столько, сколько мне нравится на удаленном сервере. Вы можете просто соединить команды вместе!

ssh user@server -t "cd /websites/website ; /bin/bash"

Теперь я могу просто сказать, что ткань это сделает, и мы уехали. Простой.

Я сказал, что это не имеет ничего общего с Fabric, но вот и новая часть моего сценария на ткани, основанная на выше:

def ssh(): ''' SSH into the remote server at the correct directory ''' local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % { 'server': server_host, 'port': server_port, 'remote_dir': remote_dir, })

Я ссылаюсь на один и тот же сценарий, поэтому переменные (server_host, server_port и remote_dir) меняются с сайта на сайт.

Поскольку Fabric может обрабатывать исходящее соединение, вы также можете просто выполните это:

def ssh(): ''' SSH into the remote server at the correct directory ''' run('cd %s ; /bin/bash' % remote_dir)

Это работает, но вывод добавляется в строку из Fabric. Это сделало подсказку более 80 символов длинной, и пока у меня есть тонны разрешения, это слишком много для меня:)

8
ответ дан 23 July 2018 в 21:05

Другие вопросы по тегам:

Похожие вопросы: