Как подключиться по 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