Поиск по сайту:

Как подключиться по SSH к определенному каталогу в Linux

Вы когда-нибудь были в ситуации, когда вам нужно было подключиться к удаленному серверу по SSH и немедленно перейти в каталог? Да? Что ж, вы на правильном пути! В этом кратком руководстве описывается, как напрямую подключиться по SSH к определенному каталогу в Linux. Это означает, что мы можем автоматически перейти в определенный каталог при входе в удаленную систему через SSH. Не просто SSH в определенный каталог, можно даже запустить любую команду сразу после подключения к удаленному серверу через SSH.

SSH в определенный каталог удаленной системы Linux

До того, как я узнал об этом методе, я обычно сначала подключался к удаленной системе по SSH, используя команду:

ssh user@remote-system

А затем перейдите в каталог, как показано ниже:

cd <some-directory>

Вот как я перехожу в каталог в удаленной системе. Уже нет! Нет необходимости использовать две отдельные команды!

Например, следующая команда позволяет мне подключиться по SSH к удаленной системе (192.168.225.52) и автоматически перейти в каталог с именем «dir1»:

ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 ; bash'

Приведенная выше команда подключится по SSH к удаленной системе (192.168.225.52) и немедленно перейдет в каталог с именем '/home/ostechnix/dir1' и, наконец, оставит вас в оболочке удаленной системы.

Здесь флаг -t используется для принудительного выделения псевдотерминала, что необходимо для интерактивной оболочки. Если вы не укажете этот флаг, подсказка не появится. А также, если вы не добавите " bash" в конце приведенной выше команды, соединение будет разорвано и управление вернется к локальной системе.

Вот пример вывода приведенной выше команды:

SSH в определенный каталог удаленной системы Linux

Вот еще несколько примеров команд для SSH в определенный каталог:

ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 ; bash --login'

Здесь флаг --login устанавливает «bash» в качестве оболочки входа.

Или,

ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 ; exec bash'

Или,

ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 && exec bash -l'

Здесь флаг -l устанавливает «bash» в качестве оболочки входа.

В приведенных выше примерах я явно упомянул bash в качестве оболочки входа. Потому что я знаю, что Bash — это оболочка по умолчанию в моей удаленной системе. Если вы не знаете тип оболочки в удаленной системе, используйте следующую команду:

ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 && exec $SHELL'

Создайте каталог в удаленной системе и автоматически подключайтесь к нему по SSH.

Если вы попытаетесь подключиться по SSH к каталогу, которого нет в удаленной системе, после успешной аутентификации вы увидите следующее сообщение:

bash: line 0: cd: /home/ostechnix/dir2: No such file or directory

Как видите, каталог с именем «dir2» недоступен в удаленной системе. Если вы хотите создать каталог в удаленной системе и автоматически переходить в него через SSH, просто запустите следующую команду из своей локальной системы:

ssh -t ostechnix@192.168.225.52 'mkdir -p dir2 ; cd /home/ostechnix/dir2 ; bash --login'

Создайте каталог в удаленной системе и автоматически перейдите в него через SSH.

Сделать изменения постоянными

Если вы не хотите каждый раз вводить приведенные выше команды вручную, просто добавьте команды, которые вы хотите запустить после подключения к SSH-серверу в ~/.bashrc или удаленной системы. >~/.bash_profile  или ~/.profile.

Отредактируйте файл bashrc:

 $ nano ~/.bashrc

Добавляйте команды одну за другой. В моем случае я добавляю следующую строку:

cd /home/ostechnix/dir1 >& /dev/null

Редактировать файл bashrc

Обратите внимание, что вам следует добавить эту строку в файл .bash_profile или .bashrc или .profile удаленной системы, а не в файл вашей локальной системы. Нажмите Ctrl+O и нажмите ENTER, чтобы сохранить, и нажмите Ctrl+X, чтобы закрыть файл.

Наконец, выполните следующую команду, чтобы обновить изменения:

 $ source ~/.bashrc

С этого момента всякий раз, когда вы входите в систему (через SSH или напрямую), команда cd будет выполняться, и вы автоматически попадете в каталог «/home/ostechnix/dir1».

SSH в определенный каталог в Linux

Выполнение команд через SSH в удаленных системах Linux.

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

Например, следующая команда приведет вас в каталог «/home/ostechnix/dir1», а затем выполнит команду «uname -a».

ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 && uname -a && exec $SHELL'

Выполнение команд через SSH в удаленных системах Linux.

Дополнительные примеры выполнения команд через SSH в удаленных системах приведены в следующем руководстве.

  • Выполнение команд в удаленных системах Linux через SSH

Надеюсь это поможет.

Связанное чтение:

  • Как выполнить cd и ls одной командой
  • Как выполнить cp или mv и cd одной командой
  • Разрешить или запретить доступ по SSH определенному пользователю или группе в Linux

Статьи по данной тематике