Эффективно управляйте удаленными SSH-соединениями с помощью этих команд Linux

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

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

Файл конфигурации SSH

Одна огромная экономия времени – это файл конфигурации SSH, расположенный в ~ / .ssh / config . Начните с создания каталога для хранения всех ключей SSH, которые вы используете для входа на серверы, с помощью команды:

 mkdir -m 0600 $HOME/.ssh_keys

Теперь скопируйте все файлы ключей SSH в этот каталог (например, clienta.pem, clientb.pem и т. Д.). Затем откройте файл ~ / .ssh / config в текстовом редакторе, выполнив команду:

 nano ~/.ssh/config

Ниже приведен пример записи, которая установит SSH-соединение с удаленным сервером:

 host clienta
 hostname 124.58.2276.80
 user ubuntu
 IdentityFile ~/.ssh_keys/clienta.pem

Добавьте в файл ~ / .ssh / config разделы строк, подобных приведенным выше, по одному для каждого сервера, который вам нужен. Затем сохраните и закройте файл, нажав Ctrl + X и следуя подсказке. После сохранения вы можете войти на любой сервер через SSH из любого каталога в терминале с помощью простой команды:

 ssh clienta

Это мгновенно зарегистрирует вас на сервере с информацией о хосте клиента, который вы указали в файле ~ / .ssh / config .

Передача файлов с помощью Scp / Rcp

Без создания постоянного сеанса входа в систему вы можете легко загружать отдельные файлы или каталоги на удаленный сервер с помощью команды scp , например:

 scp report.pdf clienta:~/

Приведенная выше команда загрузит файл report.pdf с вашего локального компьютера в домашний каталог клиентского сервера, который вы определили в разделе выше. Вы можете загружать файлы в каталог, отличный от домашнего, например:

 scp about.html clienta:/home/clienta/public_html

Вышеупомянутый файл about.html будет загружен в каталог / home / client / public_html на удаленном сервере clienta . Также можно загружать целые каталоги, используя параметр -r, например:

 scp -r Documents clienta:~/docs

Это загрузит весь каталог ~ / Documents с вашего локального компьютера в каталог ~ / docs на удаленном сервере.

Скачивание файлов

Точно так же вы можете загружать файлы или каталоги на свой локальный компьютер без создания постоянного сеанса входа в систему с помощью команды rcp, например:

 rcp clienta:~/public_html/about.html myproject/about.html

Приведенный выше код загрузит файл public_html / about.html с удаленного сервера clienta и поместит его в файл projects / about.html на вашем локальном компьютере.

Выполнение удаленных команд SSH

Еще один быстрый совет: вы можете выполнять отдельные команды Linux на удаленном сервере без постоянного сеанса входа в систему, например:

 ssh clienta ls

Вышеупомянутое выполнит команду ls на удаленном сервере clienta> и выведет список всех файлов / каталогов, не оставляя вас авторизованным на сервере. Например, если вы хотите перезапустить сервер, вы можете использовать:

 ssh clienta /sbin/shutdown -rf now

Каталог Local / bin

Давайте расширим это, позволив легко монтировать на удаленные серверы, создав каталог / bin /, который является локальным для нашей учетной записи пользователя. Откройте терминал на своем компьютере и создайте каталог / bin /, выполнив команду:

 mkdir -m 0755 ~/bin

Затем откройте файл ~ / .profile в текстовом редакторе с помощью команды:

 nano $HOME/.profile

Прокрутите вниз до самого низа файла и добавьте следующие строки, скопировав их в буфер обмена, а затем в терминале, нажав Ctrl + Shift + V :

 if [ -d "$HOME/bin" ] ; then
 PATH="$HOME/bin:$PATH"
 fi

Сохраните и закройте файл, нажав Ctrl + X , и следуйте подсказке. Это сохранит файл .profile , который проверит вновь созданный каталог local / bin / на предмет любых команд, которые вы пытаетесь запустить.

Добавление команд удаленного монтирования

Сначала проверьте, установлен ли sshfs на вашем компьютере, с помощью команды:

 sshfs --version

Если это распечатает текущую версию sshfs , то все готово. В противном случае, если вы получите сообщение об ошибке «команда не найдена», вы можете установить sshfs с помощью следующей команды:

 sudo apt-get -y install sshfs

Теперь создайте каталог / mnt /, который будет содержать все смонтированные каталоги на наших удаленных серверах. В терминале запустите такие команды, как:

 mkdir -m 0755 ~/mnt
 mkdir -m 0755 ~/mnt/clienta
 mkdir -m 0755 ~/mnt/clientb

Продолжайте создавать по одному подкаталогу для каждого удаленного сервера, к которому вы потенциально можете подключиться. Затем давайте создадим команды оболочки, которые мы будем запускать, и, например, для клиентского сервера откройте файл, выполнив следующую команду в терминале:

 nano ~/bin/mount_clienta

При необходимости измените строку ниже, указав правильную информацию о сервере, затем скопируйте и вставьте ее в пустой текстовый редактор в терминале, нажав Ctrl + Shift + V :

 #!/bin/bash
 sshfs -o IdentityFile=~/.ssh_keys/clienta.pem [email protected]:/var/www ~/mnt/clienta

Сохраните и закройте файл, нажав Ctrl + X , и следуйте подсказкам, чтобы закрыть файл. Наконец, измените права доступа к файлу, чтобы он стал исполняемым, выполнив команду:

 chmod 0755 ~/bin/mount_clienta

Теперь в любое время, когда вам нужно подключиться к удаленному серверу клиента для передачи файлов на него / с него, из любого каталога в терминале вы можете просто запустить команду:

 mount_clienta

Каталог на вашем локальном компьютере в ~ / mnt / clienta теперь будет смонтирован в каталог / var / www удаленного сервера. Вы можете начать копировать файлы в каталог и из него так же, как и в любой локальный каталог, и необходимые операции будут выполняться на удаленном сервере.

Более эффективное управление подключением

Надеюсь, приведенные выше советы помогли упростить и повысить эффективность управления вашими подключениями к удаленным серверам. В этой статье вы узнали все о файле ~ / .ssh / config, который позволяет вам входить в систему через SSH только с псевдонимом, передавать отдельные файлы / каталоги, выполнять удаленные команды SSH и как легко монтировать локальный каталог на удаленные серверы.