Эффективное управление удаленными 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 и как легко монтировать локальный каталог на удаленные серверы.