VirtualBoxに入れた固定IPのCentOS8へSSH接続する

スポンサーリンク

適当にネットワークの設定を進めたところ、他の端末からはVirtualBoxのCentOSへSSH接続できるものの、VirtualBoxを入れたWindowsからSSH接続すると「Connection refused」になるという変な状態になってしまいました。

マヌケな事をしていただけなのですが、正しい手順となぜこうなったのかをメモしておきます。

VirtualBoxのネットワーク設定

仮想マシンを右クリック > 設定 > ネットワーク

割り当ては「ブリッジ」にします。

「ブリッジ」はVirtualBoxのインストールされたPCのNICを経由し、CentOSが直接インターネットに接続されているような状態にするものです。

VirtualBoxでのネットワーク設定はこれだけです。

VirtualBoxをインストールすると、Windowsのネットワークアダプタの一覧に「VirtualBox Host-Only Ethernet Adapter」というのが追加されますが、「ブリッジ」の場合は使いませんので邪魔な場合は削除しても構いません(あとで追加できます)

削除する場合は「ファイル」から「ホストネットワークマネージャー」をクリックします。

以下から削除対象を選択し、「除去」ボタンを押すと削除されます。

再び追加したい場合は「作成」をクリックします。

初期設定されているIPアドレスは変わりますが、インストール直後と同じようにWindowsのネットワークアダプタの一覧に「VirtualBox Host-Only Ethernet Adapter」というのが追加されます。

CentOSでの設定

seLinux無効化

一時的な無効化をします

setenforce 0

ネットワーク設定

CentOS7からは「nmcli」コマンドで設定します。

以下の環境の例なのでIPアドレスやDNSは置き換えてください

  • IPアドレス:192.168.2.217
  • サブネットマスク:255.255.255.0(/24)
  • gateway:192.168.2.1
  • DNS:8.8.8.8 と 8.8.4.4

IPアドレスの設定

nmcli c mod enp0s3 ipv4.addresses 192.168.2.217/24

gatewayの設定

nmcli c mod enp0s3 ipv4.gateway 192.168.2.1

DNSの設定

nmcli c mod enp0s3 ipv4.dns 8.8.8.8,8.8.4.4

IPv4アドレス固定(DHCPを使わない)

nmcli c mod enp0s3 ipv4.method manual

起動時にネットワークを自動起動(ONBOOT=yes)

nmcli c mod enp0s3 connection.autoconnect yes

上記設定を反映させる

nmcli con up enp0s3

sshdの設定

/etc/ssh/sshd_config を開いて修正します。

rootログインの許可

PermitRootLogin  yes

パスワード無しのログイン禁止

PermitEmptyPasswords no

パスワード方式のログイン許可

PasswordAuthentication yes

待受ポート指定

Port 22

sshd再起動

systemctl restart sshd

好みのSSHクライアントで接続してみる

接続できたら完了です。

Windows10ではコマンドプロンプトからOpenSSHが使えるようになりました。

設定 > アプリと機能 > オプション機能

以下のように追加されています。

無い場合は、その上の「機能の追加」ボタンから追加できます。

ssh -v

C:\Users\Sakue>ssh -v
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]

以下のようにすれば接続できますが、

ssh root@192.168.2.217

C:\Users\Sakue>ssh root@192.168.2.217
root@192.168.2.217's password:

「-vv」というオプションを使うと詳細が表示されますので、うまく接続できない場合の確認に便利です。

ssh -vv root@192.168.2.217

C:\Users\Sakue>ssh -vv root@192.168.2.217
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug2: resolve_canonicalize: hostname 192.168.2.217 is address
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 192.168.2.217 [192.168.2.217] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_ed25519-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_xmss type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\Sakue/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.0
debug1: match: OpenSSH_8.0 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 192.168.2.217:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
~~~~ 省略

今回のトラブルの原因

VirtualBoxはWindowsのネットワークアダプタの一覧に「VirtualBox Host-Only Ethernet Adapter」を追加しますが、ここにも今回のCentOSのIPである「192.168.2.217」を設定したからです。

両方に設定すれば同じネットワーク内に「192.168.2.217」というIPが2つ存在することになり、WindowsからCentOSに接続しようとしても、そのIPは自分に割り当てていますから、CentOSには行かず、自分自身にSSH接続しようとしていたという状態です。

無意識で設定してしまってたので、原因がわかるのにかなり時間がかかってしまい、最終的に「arp -a」をしたところで「192.168.2.217」が自分自身だと分かって解決しました。

手順通りやれば10分もかからないのに、まる1日悩みました・・・

おしまい。

コメントフォーム

タイトルとURLをコピーしました