Как запустить сценарий при входе в систему через ssh и запустить другой сценарий после завершения первого?

777
Di36o

Я пытаюсь запустить скрипт / оболочку сразу после входа через ssh на мой хост с «guestUser», задача этого пользователя - подключиться к другому удаленному хосту через ssh, я создал этого пользователя на своем хосте:

guestUser:x:1234:1234::/home/guest:/bin/bash 

Затем в гостевой директории у меня есть .bashrcфайл, куда я добавляю это, следуя этому ответу ( Linux: Как автоматически запускать команды при входе в SSH? ):

if[[ -n $SSH_CONNECTION ]] ; then ssh 192.198.1.99 fi 

Я сделал это, потому что на этом шаге «guestUser» вводит sshUserInRemoteTwo и sshUserPasswordInRemoteTwo. Это не работает. Сценарий пытается зарегистрировать «guestUser» в remoteHostTwoкачестве «guestUser», это не цель, мне нужен сценарий запрашивает имя пользователя / пароль.

Если я понял, что это работает: скрипт запрашивает имя пользователя и пароль и правильно входит в систему на втором хосте, а затем, когда соединение SHH со вторым хостом завершено, guestUser отключен от моего хоста; потому что в настоящее время соединение SSH закончено, и пользователь остается на моем хосте.

0

2 ответа на вопрос

0
krowe

Пытаться:

ssh <username>@192.198.1.99 

Или же:

ssh -l <username> 192.198.1.99 

Просто замените строку в вашем фрагменте .bashrc выше одной из этих форм.

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

человек сш

хорошо, а как насчет того, когда это соединение закончится, что я могу сделать, чтобы выйти из guestUSer с первого хоста тоже? Di36o 9 лет назад 0
По умолчанию все SSH-серверы имеют тайм-аут соединения. SSH поддерживает соединение только до тех пор, пока поддерживаются постоянные пакеты. Я предлагаю просто закрыть окно терминала, чтобы закрыть оба соединения в течение нескольких минут. Если вы находитесь в однопользовательском режиме, просто введите `exit`, нажмите` enter` и еще раз введите `exit`. krowe 9 лет назад 0
Я сделал это, я набрал `выход`, но это не цель, потому что мне нужен обратный вызов или что-то подобное. Скрипт для выхода из первого хоста. Я предоставляю доступ к первому хосту только потому, что он является единственным безопасным / разрешенным хостом для подключения ко второму, после сеанса SSH на втором хосте мне также необходимо немедленно выйти из системы с первого. Ища в Google, я обнаружил, что "мог" использовать демона, чтобы слушать сеанс SSH, когда он закончится, демон запустит скрипт выхода из системы, но я не знаю, как это реализовать. Di36o 9 лет назад 0
0
Eugen Konkov

If you want the remote will as proxy it is not required to create special user. You may done that by creating auth by key and restrict this key to unconditionally run specified command

man authorized_keys ... command="command" Specifies that the command is executed whenever this key is used for authentication. 

In this command you may chain ssh connection.

But better for this purposes use port forwarding.

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