【Windows】Hyper-V上のCentOSにSSH接続する

はじめに

こんにちは、SHOJIです。

今回は、前回Hyper-Vに追加したCentOS7にSSHの設定を入れてリモート操作できるようにします。

前回の記事はこちら。

deadline-driven-developer.hatenablog.com

OpenSSHの設定

こちらを参考に実施しました。

kajuhome.com

  1. yum list installed | grep ssh コマンドで openssh-serverが存在するか確認する。 存在しない場合は、sudo yum -y install openssh-server コマンドでインストールする。

  2. systemctl start sshd.service コマンドで openssh-serverを起動する。

  3. ssh-keygen -t rsa コマンドで秘密鍵・公開鍵を作成する。

  4. mv /home/[user_name]/.ssh/id_rsa.pub /home/linux/.ssh/authorized_keys コマンドで公開鍵を移動する。

  5. chmod 700 /home/[user_name]/.ssh コマンド、chmod 600 /home/[user_name]/.ssh/authorized_keys コマンドでパーミッションを変更する。

秘密鍵の受け渡し

Windowsへの受け渡し

「OpenSSHの設定」で作成した秘密鍵Hyper-Vのホスト(Windows10)へ受け渡す。 受け渡し方法はいくつかあるが、ここではHyper-Vのホスト(Windows10)に共有フォルダを作成し、CentOSからCIFSでファイルを送る。

Windows側の設定

  1. 任意の場所にフォルダを作成し、プロパティの共有タブから共有フォルダに設定する。

CentOS側の設定

  1. sudo yum install -y samba-client cifs-utils コマンドを実行し、必要な機能をインストールする。

  2. sudo mkdir /mnt/windows コマンドでマウント先ディレクトリを作成する。

  3. smbclient -L //[ip_address] -U [windows_user_name] コマンドでディレクトリが見えるか確認する。

    do_connect: Connection to [ip_address] failed のメッセージが出る場合、Windowsファイアウォールがブロックしている可能性あり。

    Unable to connect with SMB1 -- no workgroup available のメッセージが出るのはSMB1でアクセスしているため。次のコマンドで vers=2.0 と指定するとSMB2が使用されるため無視してよい。

  4. sudo mount.cifs [share_directory_path(ex.//192.168.1.10/share/)] /mnt/windows -o vers=2.0,username=[windows_user_name] コマンドでディレクトリをマウントする。

  5. df -h コマンドでマウントできていることを確認する。

  6. sudo cp /home/[user_name]/.ssh/id_rsa /mnt/windows コマンドで秘密鍵をコピーする。

Ubuntuへの受け渡し

こちらを参考に実施しました。

www.digitalocean.com

qiita.com

新たにUbuntu端末を用意してSSH接続する場合の操作です。 Ubuntu側をNFSサーバ、CentOSNFSクライアントにして、秘密鍵を受け渡しています。 今回はLinux間のファイル共有の要素を取り入れたい&プライベートなネットワークでのファイル授受のため、NFSでやり取りしていますが、NFSは暗号化されたセキュアな授受方法ではないことはご承知おきください。

Ubuntu側の設定

  1. sudo apt install nfs-kernel-server コマンドを実行し、必要な機能をインストールする。

  2. 任意の場所にディレクトリを作成し、sudo chown nobody:nogroup /home/[user_name]/share コマンドで所有者をnobodyに変更する。

  3. /etc/exportsファイルに[directory_path] *(rw, sync, no_subtree_check) と追記する。

  4. sudo exports -ar コマンドでディレクトリをエクスポートする。

  5. sudo exportfs -v コマンドでディレクトリがエクスポートされていることを確認する。

CentOS側の設定

  1. sudo yum install showmount コマンドを実行し、必要な機能をインストールする。
  2. mkdir /mnt/ubuntu コマンドを実行し、マウント先ディレクトリを作成する。
  3. showmount -e [ubuntu_ip_address] コマンドを実行し、Ubuntu側で設定したディレクトリが見えることを確認する。
  4. sudo mount -t nfs [ubuntu_ip_address]:[directory_path] /mnt/ubuntu コマンドでディレクトリをマウントする。
  5. df -h コマンドでマウントできていることを確認する。
  6. sudo cp /home/[user_name]/.ssh/id_rsa /mnt/ubuntu コマンドで秘密鍵をコピーする。

秘密鍵を用いたSSH接続

  1. ssh -l [centos_user_name] -i [private_key_path] [centos_ip_address] コマンドでSSH接続を行う。

    (Windows10、Ubuntuともに同じコマンドで接続できる)

  2. exit コマンドでSSH接続を終了する。

おわりに

これでCentOSSSH接続でリモート操作を行えるようになりました。 次回はこの上にWebサービスを載せていきたいと思います。