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

Как назначить IP-адрес удаленным системам Linux через SSH

Легко настраивайте IP-адреса для удаленных систем Linux с помощью команды nmcli через SSH.

Мы уже узнали, как установить статический IP-адрес для системы Linux, а также как настроить несколько IP-адресов в системе Linux. В этом руководстве мы узнаем, как назначить IP-адрес удаленной системе Linux с помощью команды nmcli.

Существует ряд причин, по которым вам может потребоваться изменить IP-адрес удаленной системы Linux. Некоторые распространенные причины включают в себя:

  • Для соблюдения сетевых политик. Во многих организациях действуют политики, требующие, чтобы все устройства в сети имели определенный диапазон IP-адресов. Если удаленная система Linux не соответствует этим политикам, вам может потребоваться изменить ее IP-адрес.
  • Для устранения проблем с сетью. Если в удаленной системе Linux возникают проблемы с сетью, изменение ее IP-адреса иногда может помочь решить проблему.
  • Чтобы перенести систему в новую сеть: если вы переносите удаленную систему Linux в новую сеть, вам потребуется изменить ее IP-адрес, чтобы он соответствовал диапазону адресов новой сети.
  • Для повышения безопасности: изменение IP-адреса удаленной системы Linux может затруднить ее обнаружение и нацеливание на злоумышленников.

Независимо от причин, если вам когда-нибудь понадобится изменить IP-адрес удаленной системы Linux, это можно легко сделать с помощью команды nmcli.

Назначьте IP-адрес удаленной системе Linux с помощью команды nmcli

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

Прежде чем назначать IP-адрес удаленной системы Linux с помощью nmcli, сначала нам нужно найти сетевой интерфейс этой системы. Для этого запустите:

ssh ostechnix@192.168.1.40 'nmcli con show'

Замените имя пользователя и IP-адрес на свои собственные.

Пример вывода:

NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  60e8eaf3-89f9-3e9f-9919-1944e7abee20  ethernet  ens18  

Как вы видите в выводе выше, имя сетевого подключения — «Проводное соединение 1».

Теперь давайте изменим IP-адрес с помощью команды:

ssh -t ostechnix@192.168.1.40 "sudo nmcli con modify 'Wired connection 1' ipv4.address 192.168.1.50/24"

Здесь флаг -t с ssh заставляет его выделить псевдотерминал, который позволяет sudo запрашивать пароль. Когда вы запускаете эту команду, ssh должен запросить у вас пароль удаленного пользователя (если требуется), а затем sudo запросит пароль на удаленном компьютере. Другими словами, вам будет предложено дважды ввести пароль удаленного пользователя.

Вот полная разбивка приведенной выше команды.

  • ssh: это команда Secure Shell, которая используется для установки безопасного соединения с удаленным компьютером.
  • -t: этот параметр принудительно распределяет псевдотерминал. Здесь он используется, чтобы убедиться, что терминал выделен на удаленной стороне, что позволяет sudo запрашивать пароль при необходимости.
  • ostechnix@192.168.1.40: указывает удаленного пользователя и хост, к которому вы подключаетесь. Замените ostechnix на фактическое имя пользователя и 192.168.1.40 на IP-адрес вашей удаленной системы.
  • "sudo nmcli conmodify 'Проводное соединение 1' ipv4.address 192.168.1.50/24": это команда, которая выполняется на удаленном компьютере после установления SSH-соединения.

    • sudo: запускает следующую команду от имени суперпользователя (или другого пользователя), предполагая, что пользователь имеет необходимые разрешения.
    • nmcli: интерфейс командной строки NetworkManager, инструмент для управления NetworkManager (который представляет собой демон, управляющий сетевыми настройками во многих дистрибутивах Linux).
    • conmodify: эта опция используется для изменения настроек определенного сетевого подключения.
    • 'Проводное соединение 1': имя сетевого подключения, которое вы хотите изменить. Он заключен в одинарные кавычки для обработки пробелов в имени соединения.
    • ipv4.address 192.168.1.50/24: устанавливает IPv4-адрес сетевого интерфейса 192.168.1.50 с маской подсети 255.255.255.0 (обозначается /24 в нотации CIDR).

Вот и все. Присвоен новый IP-адрес. Давайте проверим это с помощью команды:

ssh ostechnix@192.168.1.40 "ip addr show ens18"

Замените имя пользователя, IP-адрес и имя сетевой карты (ens18) на свои. Вы увидите, что назначен новый IP-адрес.

Пример вывода:

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 6e:26:0b:8e:33:8c brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 192.168.1.40/24 brd 192.168.1.255 scope global noprefixroute ens18
       valid_lft forever preferred_lft forever
    inet 192.168.1.50/24 brd 192.168.1.255 scope global secondary noprefixroute ens18
       valid_lft forever preferred_lft forever
    inet6 fe80::bfcf:b9d3:60de:af1b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Назначьте IP-адрес удаленной системе Linux через SSH с помощью команды nmcli

Таким образом, вы можете добавить несколько IP-адресов к удаленному Linux через SSH, используя команду nmcli.

Как я уже сказал, этот метод добавит дополнительный IP. Существующий старый IP-адрес останется неизменным.

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

echo 'yourpassword' | ssh -t user@ip "sudo -S nmcli con modify YourConnectionName ipv4.address YourIPAddress"

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

Скрипт Bash для назначения IP-адреса удаленной системе Linux через SSH с использованием nmcli

Мы создали простой сценарий Bash под названием nmcli_remote_ip_changer для назначения нового IP-адреса удаленной системе Linux с помощью команды nmcli через SSH.

Этот скрипт довольно прост и в основном делает следующее:

  • Попросите вас ввести имя удаленного пользователя и IP-адрес,
  • Установите SSH-соединение,
  • Получите и отобразите сетевые подключения на удаленном компьютере,
  • Предложите вам выбрать соединение для изменения и запросите новую конфигурацию IP,
  • Используйте sudo в удаленном сеансе, чтобы применить изменения и перезапустить NetworkManager.

Он размещен в репозитории Ostechnix GitHub. Вы можете скачать и изменить его по своему усмотрению.

Если вы хотите использовать этот сценарий для добавления нового IP-адреса в удаленную систему Linux, выполните следующие действия:

1. Git клонирует скрипт:

git clone https://gist.github.com/ostechnix/2c053aba072c3f201f32c22b60cdf9a6 nmcli_remote_ip_changer

Это клонирует сценарий в каталоге с именем nmcli_remote_ip_changer в текущем каталоге.

2. Перейдите в каталог и сделайте скрипт исполняемым с помощью команд:

cd nmcli_remote_ip_changer/
chmod +x nmcli_remote_ip_changer.sh

3. Запустите скрипт командой:

./nmcli_remote_ip_changer.sh

Вам будет предложено ввести имя пользователя вашей удаленной системы, текущий IP-адрес, новый IP-адрес, шлюз, DNS и т. д. После предоставления всех необходимых данных введите пароль sudo вашей удаленной системы Linux.

Enter the remote username: ostechnix
Enter the remote host IP address: 192.168.1.40
Fetching list of network connections from the remote system...
ostechnix@192.168.1.40's password: 
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  60e8eaf3-89f9-3e9f-9919-1944e7abee20  ethernet  ens18  

Enter the NAME of the connection you want to modify: Wired connection 1
Enter the new IP address (in CIDR format, e.g., 192.168.1.10/24): 192.168.1.50/24
Enter the new Gateway (leave empty if unchanged): 192.168.1.101
Enter the new DNS (leave empty if unchanged, space separated for multiple): 8.8.8.8,8.8.4.4
ostechnix@192.168.1.40's password: 
Applying the new IP address...
[sudo] password for ostechnix: 
IP address applied successfully.
Restarting NetworkManager to apply changes...
NetworkManager restarted successfully.
Please verify the connectivity to the remote system.
Connection to 192.168.1.40 closed.

Назначьте IP-адрес удаленной системе Linux через SSH с помощью сценария nmcli_remote_ip_changer

Вы можете проверить новый IP-адрес, подключившись к удаленной системе по SSH, или запустить эту команду из локальной системы, чтобы проверить IP-адрес удаленной системы через SSH:

ssh ostechnix@192.168.1.40 'ip addr show ens18'

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

Заключение

Как видите, изменение IP-адреса удаленной системы Linux — простой процесс. Команда nmcli существенно упрощает эту задачу.

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

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