ウェブサイト検索

SSH 経由でリモート Linux システムに IP アドレスを割り当てる方法


SSH 経由で nmcli コマンドを使用して、リモート Linux システムに IP アドレスを簡単に設定します。

Linux システムに静的 IP アドレスを設定する方法と、Linux システム上で複数の IP アドレスを構成する方法をすでに学習しました。このガイドでは、nmcli コマンドを使用してリモート Linux システムに IP アドレスを割り当てる方法を学びます。

リモート Linux システムの IP アドレスを変更する必要がある理由はいくつかあります。一般的な理由には次のようなものがあります。

  • ネットワーク ポリシーに準拠するため: 多くの組織は、ネットワーク上のすべてのデバイスに特定の IP アドレス範囲を持たせることを要求するポリシーを持っています。リモート Linux システムがこれらのポリシーに準拠していない場合は、その IP アドレスを変更する必要がある場合があります。
  • ネットワークの問題をトラブルシューティングするには: リモート Linux システムでネットワークの問題が発生している場合、その IP アドレスを変更すると問題の解決に役立つ場合があります。
  • システムを新しいネットワークに移行するには: リモート Linux システムを新しいネットワークに移行する場合は、新しいネットワークのアドレス範囲と一致するように IP アドレスを変更する必要があります。
  • セキュリティを向上させるため: リモート Linux システムの IP アドレスを変更すると、攻撃者がそのシステムを見つけてターゲットにすることがより困難になる可能性があります。

理由に関係なく、リモート Linux システムの IP アドレスを変更する必要がある場合は、nmcli コマンドを使用して簡単に変更できます。

nmcli コマンドを使用してリモート Linux システムに IP アドレスを割り当てる

すでにご存知かもしれませんが、SSH を使用してリモート Linux システム上でコマンドを実行できるため、リモート Linux システムを効率的かつ柔軟に管理することが容易になります。

nmcli を使用してリモート Linux システムの IP アドレスを割り当てる前に、まずそのシステムのネットワーク インターフェイスを見つける必要があります。これを行うには、次を実行します。

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"

ここで、ssh の -t フラグにより、強制的に疑似端末が割り当てられ、sudo がパスワードの入力を求めることができるようになります。このコマンドを実行すると、ssh はリモート ユーザーのパスワードの入力を求めるプロンプトを表示し (必要な場合)、その後 sudo はリモート マシン上でパスワードの入力を求めるプロンプトを表示します。つまり、リモート ユーザーのパスワードを 2 回入力するよう求められます。

上記のコマンドの完全な内訳は次のとおりです。

  • ssh: これは、リモート マシンへの安全な接続を確立するために使用される Secure Shell コマンドです。
  • -t: このオプションは疑似端末の割り当てを強制します。ここでは、ターミナルがリモート側に割り当てられていることを確認するために使用されており、これにより、必要に応じて sudo がパスワードの入力を求めることができるようになります。
  • ostechnix@192.168.1.40: これは、接続先のリモート ユーザーとホストを指定します。 ostechnix を実際のユーザー名に置き換え、192.168.1.40 をリモート システムの IP アドレスに置き換えます。
  • "sudo nmcli con edit 'Wired connection 1' ipv4.address 192.168.1.50/24": これは、SSH 接続の確立後にリモート マシン上で実行されるコマンドです。

    • sudo: user が必要な権限を持っていると仮定して、スーパーユーザー (または別のユーザー) として次のコマンドを実行します。
    • nmcli: NetworkManager コマンド ライン インターフェイス。NetworkManager (多くの Linux ディストリビューションでネットワーク設定を管理するデーモン) を制御するためのツールです。
    • conmodify: このオプションは、特定のネットワーク接続の設定を変更するために使用されます。
    • '有線接続 1': 変更するネットワーク接続の名前。接続名のスペースを処理するために一重引用符で囲まれています。
    • ipv4.address 192.168.1.50/24: ネットワーク インターフェイスの IPv4 アドレスを 192.168.1.50 に設定し、サブネット マスク 255.255.255.0 を設定します。 (CIDR 表記では /24 で示されます)。

それでおしまい。新しい 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

nmcli コマンドを使用して SSH 経由でリモート Linux システムに IP アドレスを割り当てる

この方法では、nmcli コマンドを使用して SSH 経由でリモート Linux に複数の IP アドレスを追加できます。

すでに述べたように、この方法では追加の IP が追加されます。既存の古い IP アドレスは変更されません。

-S オプションを使用して sudo パスワードを渡すこともできます。これにより、sudo が標準入力からパスワードを読み取ることができます。パスワードをエコーして ssh にパイプすることもできますが、 パスワードがプロセス リストまたはシェル履歴に表示される可能性があるためこの方法は安全ではないことに注意してください。

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

繰り返しますが、この方法は安全ではありません。パスワードはローカル マシン上またはネットワーク送信を通じて他のユーザーに公開される可能性があるためです。

nmcli を使用して SSH 経由でリモート Linux システムに IP アドレスを割り当てる Bash スクリプト

SSH 経由で nmcli コマンドを使用してリモート Linux システムに新しい IP アドレスを割り当てるための、nmcli_remote_ip_changer という単純な Bash スクリプトを作成しました。

このスクリプトは非常に単純で、基本的に次のことを行います。

  • リモートのユーザー名とIPの入力を求めるプロンプトが表示されます。
  • SSH接続を確立し、
  • リモート マシン上のネットワーク接続を取得して表示します。
  • 変更する接続を選択し、新しい IP 構成を尋ねるプロンプトが表示されます。
  • リモート セッション内で sudo を使用して変更を適用し、NetworkManager を再起動します。

これはOstechnix GitHub リポジトリでホストされています。要件に応じてダウンロードして変更できます。

このスクリプトを使用してリモート Linux システムに新しい IP アドレスを追加する場合は、次の手順に従います。

1。 Git でスクリプトをクローンします。

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

これにより、現在のディレクトリの nmcli_remote_ip_changer という名前のディレクトリにスクリプトのクローンが作成されます。

2。 Cd でディレクトリに移動し、コマンドを使用してスクリプトを実行可能にします。

cd nmcli_remote_ip_changer/
chmod +x nmcli_remote_ip_changer.sh

3 。次のコマンドを使用してスクリプトを実行します。

./nmcli_remote_ip_changer.sh

リモート システムのユーザー名、現在の IP アドレス、新しい IP アドレス、ゲートウェイ、DNS などを入力するように求められます。必要な詳細をすべて入力した後、リモート Linux システムの sudo パスワードを入力します。

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.

nmcli_remote_ip_changer スクリプトを使用して SSH 経由でリモート Linux システムに IP アドレスを割り当てる

新しい IP アドレスを使用してリモート システムに SSH 接続して確認することも、ローカル システムから次のコマンドを実行して SSH 経由でリモート システムの IP を確認することもできます。

ssh ostechnix@192.168.1.40 'ip addr show ens18'

注意: リモート ユーザーのパスワードを入力したくない場合は、SSH キーベースの認証を設定できます。

結論

ご覧のとおり、リモート Linux システムの IP アドレスの変更は簡単なプロセスです。 nmcli コマンドを使用すると、このタスクが大幅に簡素化されます。

nmcli コマンドを直接実行する場合でも、コマンドをスクリプトに組み込む場合でも、このタスクは簡単に実行できます。

関連記事