※当サイトの記事には、広告・プロモーションが含まれます。

VirtualBoxに作成した仮想マシンにインストールしたCentOS7でSSH接続

リモート接続とSSH(Secure SHell)

リモート接続 ⇒

ネットワーク経由で別のホストに接続すること。

以前は、telnetというものが使われていたようですが、telnetは通信が暗号化されないため、盗聴などによって情報の漏洩が起こってしまいます。

そこで、登場したのが、SSH(Secure SHell)というプロトコルです。

 

SSH ⇒ 通信内容を暗号化し、安全なクライアント接続を可能にする仕組みです。

Secure Shell(セキュアシェル、SSH)とは

暗号認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルパスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。

Secure Shell - Wikipedia

ゲストOSのCentOS7でSSH接続

VirtualBoxを起動し、仮想マシン(CentOS7をインストールしたもの)を起動します。

GUIでログインしたら、『アプリケーション』>『お気に入り』>『端末』を選択。

 

SSHでホストにリモート接続をするには、『ssh』コマンドを使います。

 ssh ユーザー名@接続先ホスト名 

今回は、ローカルホスト(仮想マシン自身)に接続を試みます。

仮想マシンIPアドレス(ホスト)を調べるには、『ifconfig』コマンドを使います。 

 ifconfig

『enp0s3:』というほうが、仮想マシンの情報で、『lo:』というほうがホストマシン(自分のパソコン)の情報かと思われます。

『enp0s3:』の方の『inet』の横の数字がIPアドレスです。 

f:id:ts0818:20151219120143p:plain

IPアドレスが確認できたので、SSHで接続してみます。

localhost』か『IPアドレス』を使って、(ここではlocalhostを使用) 

 ssh localhost

とコマンドを打つと、下記のように表示されるので、『yes』を入力し『Enterキー』をクリックします。

 The authenticity of host 'dlp.server.world ()' can't be established.
 ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:60:90:d8.
 Are you sure you want to continue connecting (yes/no)? yes

ゲストOSにログインした時のユーザーのパスワードを入力 

 Warning: Permanently added 'dlp.server.world' (ECDSA) to the list of known hosts.
 ユーザー名@dlp.server.world's password:     # ログインユーザーのパスワード

下記のように表示されれば、ログイン成功です。 

 [ユーザー名@dlp ~]$     # ログインできました

netstat』コマンドで、接続状況を確認できます。 

⇩  netstatコマンドについては下記サイトへ

Linuxコマンド - netstat - ネットワークの接続状況を表示 - Linux入門 - Webkaru

ホストOSのWindowsとゲストOSのCentOS7をネットワーク接続

ネットワークの設定 

 

  1. NAT(Network Address Translation)の設定
    • これが設定されていないとVM仮想マシン)からインターネットにアクセス出来ません。(wgetもgitも何も使えない)
    • 通常は最初から設定されています。
      (設定 > ネットワーク > アダプター1)
  2. ホストオンリーアダプター
    • これを設定すればホストOS(Windows等)からVM仮想マシンにアクセスできます。(teratermとか、ブラウザからアクセスしたい時など)

※ ブリッジアダプターというネットワークを設定すると、ゲストOS(ここではCentOS7)から直接外部ネットワークに接続することができるようですが、その際はセキュリティをかなり意識しないとマズそうです。(今回は割愛)

 

2018年3月31日(土):追記

イメージ図としては、 

iwsttty.hatenablog.com

centos.memordm.com

⇧  上記サイト様の図が分かりやすいと思います。 

 

NATはデフォルトで設定されているようなので、ホストオンリーアダプターのネットワークを追加していきます。

VirtualBoxで作成した仮想マシン(CentOS7)の仮想NIC(ネットワークインターフェイスカード)、つまりネットワークを

  • NAT
  • ネットワークカード

の2つにしていこうと思います。

NICについては、

ezxnet.com

⇧  上記サイト様によりますと、インターネット通信には必須ということのようです。

 

ちなみに、VirtualBoxのネットワークは、仮想マシンごとに設定できますが、

oracletechman.blogspot.jp

⇧  上記サイト様によりますと、最大8個までいけるようです。

 

 

 ホストオンリーアダプターの設定

『ファイル』 > 『環境設定』 > 『ネットワーク』 > 『ホストオンリーネットワーク』の順に選択していきます。

f:id:ts0818:20151216164634j:plain

右にある『ホストオンリーネットワークを追加』アイコンを選択します。

f:id:ts0818:20151216164635j:plain

作成されたネットワークを選択して、右の『ホストオンリーネットワークを編集』アイコンを選択します。

IPv4アドレスに設定したいIPアドレスを設定(ホストOSであるwindowsコマンドプロンプトで『ipconfig』コマンドを打って表示される項目の中に、『イーサネット アダプター VirtualBox Host-Only Network:』というものがあるので、その中の『IPv4アドレス』を指定します。)

f:id:ts0818:20151216164636j:plain

VM仮想マシン)のイメージが並んでる画面に戻って、追加したホストオンリーネットワークを使用したいVM仮想マシン)のイメージを右クリックし、『設定(S)』を選択します。

f:id:ts0818:20151216164637j:plain

『ネットワーク』>『アダプター2』を選択します。

ネットワークアダプターを有効化(E)』にチェックをし、
『割り当て(A)』を『ホストオンリーアダプター』にし、
『名前(N)』を今作成したアダプター『Virtual Box Host-Only Ethernet Adapter』へ変更します。

『OK』ボタンをクリックします。

f:id:ts0818:20151216164638j:plain

仮想マシンを起動し、GUIログインしたら、『アプリケーション』>『お気に入り』>『端末』を選択し、『ip a』コマンドを実行します。

『enp0s8』のinetの項目にIPアドレスが追加されてれば、OKです。

『exit』コマンドで終了します。

f:id:ts0818:20151219120246p:plain

 

TeraTermのインストール

Linuxでは標準でsshコマンドが使えるようですが、windowsでは標準でSSHクライアントが用意されていません。

TeraTermというソフトウェアを導入することで、windowsコンピューターからLinuxマシンにSSHで接続できるようになります。

 

 ⇩  下記サイトでインストーラーをダウンロードできます。

・Tera Term (テラターム) プロジェクト日本語トップページ - OSDN
http://sourceforge.jp/projects/ttssh2/

 

左下の『ダウンロード』からバージョンを選択します。

今回は『Tera Term 4.85(2014年11-30)』 というものを選択しました。

f:id:ts0818:20151216172434j:plain

teraterm-4.85.exe』を選択します。

f:id:ts0818:20151216172435j:plain

ファイルがダウンロードされた、ファイルをダブルクリックします。

f:id:ts0818:20151216172436j:plain

『実行(R)』ボタンをクリックします。

f:id:ts0818:20151216172437j:plain

『日本語』を選択し『OK』ボタンをクリックします。

f:id:ts0818:20151216172438j:plain

『次へ(N)>』ボタンをクリックします。

f:id:ts0818:20151216172439j:plain

『同意する(A)』にチェックし、『次へ(N)』ボタンをクリックします。

f:id:ts0818:20151216172440j:plain

特に何も変更せず、『次へ(N)>』ボタンをクリックします。

f:id:ts0818:20151216172441j:plain

後で変えられるようなので、ここでは何も変更せず『次へ(N)>』ボタンをクリックします。

f:id:ts0818:20151216172442j:plain

『日本語』を選択し、『次へ(N)>』ボタンをクリックします。

f:id:ts0818:20151216172443j:plain

特に何も変更せず『次へ(N)>』ボタンをクリックします。

f:id:ts0818:20151216172444j:plain

下記項目にチェックし『次へ(N)>』ボタンをクリックします。

f:id:ts0818:20151216172445j:plain

『インストール』ボタンをクリックします。

f:id:ts0818:20151216172446j:plain

『完了(F)』ボタンをクリックします。

『Tera Term』がインストールされました。

f:id:ts0818:20151216172447j:plain

 

Tera Termで仮想マシン(CentOS7)にSSH接続

VirtualBoxを起動し、仮想マシン(CentOS7)を起動し、GUIでログインしておきます。

次に、Tera Termを起動させます。 

『スタート』>『Tera Term』を選択します。

f:id:ts0818:20151216174454j:plain

『ホスト(T)』に『ホストオンリーアダプター』で追加されたIPアドレスを入力します。

ゲストOS(CentOS7)の端末で『ifconfig』コマンドで表示された『enp0s8』のinetの項目にあるIPアドレスのことです。

f:id:ts0818:20151216175010j:plain

初回接続時のみ、セキュリティ警告ダイアログが表示されますが、 特に何も変更せず『続行(C)』ボタンを選択クリックします。

f:id:ts0818:20151216174920p:plain

仮想マシン(CentOS7)でログインした時の情報を『ユーザー名』『パスフレーズ』に入力したら、『OK』ボタンを選択クリックします。

f:id:ts0818:20151216174656j:plain

ホストOS(Windows7)からゲストOS(CentOS7)に接続されました。

『exit』コマンドで接続を閉じることができます。

f:id:ts0818:20151216174657j:plain

 

WinSCPをインストール

Tera Termは、SSH接続を行うだけなので、ファイルのアップロード・ダウンロードを行うには、WinSCPというソフトウェアをインストールする必要があります。

windowsでscp(sshを使ってネットワーク・ホスト間でファイルを安全にコピーするためのコマンド)を利用するのに、WinSCPというソフトウェアが必要です。

 

f:id:ts0818:20151216210600j:plain

ダウンロードされたファイルをダブルクリックします。

f:id:ts0818:20151216210601j:plain

『実行(R)』をクリックします。 

f:id:ts0818:20151216210602j:plain

 『次へ(N)>』ボタンを選択クリックします。

f:id:ts0818:20151216210604j:plain

『Japanese - 日本語』

f:id:ts0818:20151216210603j:plain

特に何も変更せず『次へ(N)>』ボタンを選択クリックします。

f:id:ts0818:20151216210607j:plain

特に何も変更せず『次へ(N)>』ボタンを選択クリックします。

f:id:ts0818:20151216210606j:plain

『完了(F)』ボタンを選択クリックします。

f:id:ts0818:20151216210609j:plain

『インストール』ボタンを選択しクリックします。

f:id:ts0818:20151216210608j:plain

『ホスト名(H)』に、ゲストOS(CentOS7)の端末で『ifconfig』コマンドで表示された『enp0s8』のinetの項目にあるIPアドレス(Tera Termで入力したのと同じIPアドレス)を入力し、『ユーザー名(U)』『パスワード(P)』に、ゲストOS(CentOS7)にログインした時の情報を入力します。

f:id:ts0818:20151216210610j:plain

『保存(S)』ボタンを選択クリックすると、接続情報が保存されます。

f:id:ts0818:20151216210611j:plain

VirtualBoxで接続先の仮想マシン(CentOS7)が起動してる状態にしておいてから、

『ログイン』ボタンを選択クリックします。

f:id:ts0818:20151216210612j:plain

『パスワード(P)』 を求められるので、『ログイン - WinSCP』で設定したパスワードを入力し『OK』ボタンをクリックします。

f:id:ts0818:20151218125736j:plain

『ホストOS(パソコン本体のwindows7)』『ゲストOS(VirtualBox仮想マシンのCentOS7)』がSFTP接続されました。

⇩  SFTPなどについては下記サイトへ

SCPとSFTPの違い | サバカン屋テックブログ

ファイルを、ドラッグ&ドロップすることでファイルのコピーができます。

左が『ホストOS』、右が『ゲストOS』です。

f:id:ts0818:20151218125737j:plain

『権限がありません(エラーコード:3)』が表示される場合は、たいてい、ゲストOS(CentOS7)側でフォルダに権限が制限されてるため(所有者が『root』になってる)だと思われます。

f:id:ts0818:20151218130716j:plain

【対策】

ゲストOS側で、所有者が『ユーザー(/home/ユーザー名)』となっているディレクトリ(『chmodコマンドなどでファイルの権限を変更していない場合』)に移れば、ホストOS側からゲストOS側にファイルは送れます。下の画像のように所有者が『ユーザー』なら『Permission dinied』のエラーは起きないと思います。

f:id:ts0818:20151218142204j:plain

f:id:ts0818:20151218142021j:plain

そうしておいてから、ゲストOS(CentOS7)上で『mvコマンド』でファイルを移動するのも1つの手だと思います。

・mvコマンド(それぞれの間には半角スペースを空ける。 )

 mv [オプション] [移動元(変更前ファイル名)] [移動先(ファイルパス)]

例:hoge.phpファイルをhogeディレクトリに移動

mv -i  hoge.php hoge/hoge.php

・[オプション]

-f:移動先に同じ名前のファイルが存在する場合、強制的に上書きします。
-i:移動先に同じ名前のファイルが存在する場合、上書きするか確認します。
-u:移動先に同じ名前のファイルが存在する場合、タイムスタンプが新しければ移動します。
-b:移動先に同じ名前のファイルが存在する場合、バックアップを作成します。

(※『-f』オプションがない場合でも同じ名前のファイルが存在した場合、上書きされる可能性があるので注意が必要です。)

⇩  mvコマンドについて詳しくは下記サイトへ 

CodeZine(コードジン)

 

ゲストOS(CentOS7)にインストールしたXAMPPは所有者がrootになってるので、lamppのhtdocs(/opt/lampp/htdocs)に、ホストOS(windows7)からphpファイルを送る時に、今回のエラーが起きたのですが、ベターなやり方が全く思いつかなかったんですが、一般的にどうするべきだったのか・・・。

やはり、技術書を買って勉強すべきだとは思うのですが、どの書籍が良いのか自分みたいな素人には分からんのも悩みの種です。

ちなみに、Mac(OS X)環境では、Linuxと同じ様に標準でsshコマンドやscpコマンドが使えるようなので、Tera TermやWinSCPなどのソフトをインストールする必要はないようです、windowsのバカ野郎~。

 

⇩  WinSCPのFAQで紹介されてるPermission diniedに対する処理方法は下記サイトへ

WinSCPでsudoしてroot権限でリモートサーバーのファイル編集を可能にする | モノレビュー

 

今回はこのへんで。