リモート接続とSSH(Secure SHell)
リモート接続 ⇒
ネットワーク経由で別のホストに接続すること。
以前は、telnetというものが使われていたようですが、telnetは通信が暗号化されないため、盗聴などによって情報の漏洩が起こってしまいます。
そこで、登場したのが、SSH(Secure SHell)というプロトコルです。
SSH ⇒ 通信内容を暗号化し、安全なクライアント接続を可能にする仕組みです。
Secure Shell(セキュアシェル、SSH)とは
暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。
ゲストOSのCentOS7でSSH接続
VirtualBoxを起動し、仮想マシン(CentOS7をインストールしたもの)を起動します。
GUIでログインしたら、『アプリケーション』>『お気に入り』>『端末』を選択。
SSHでホストにリモート接続をするには、『ssh』コマンドを使います。
今回は、ローカルホスト(仮想マシン自身)に接続を試みます。
仮想マシンのIPアドレス(ホスト)を調べるには、『ifconfig』コマンドを使います。
『enp0s3:』というほうが、仮想マシンの情報で、『lo:』というほうがホストマシン(自分のパソコン)の情報かと思われます。
『enp0s3:』の方の『inet』の横の数字がIPアドレスです。
『localhost』か『IPアドレス』を使って、(ここではlocalhostを使用)
とコマンドを打つと、下記のように表示されるので、『yes』を入力し『Enterキー』をクリックします。
ゲストOSにログインした時のユーザーのパスワードを入力
下記のように表示されれば、ログイン成功です。
『netstat』コマンドで、接続状況を確認できます。
⇩ netstatコマンドについては下記サイトへ
・Linuxコマンド - netstat - ネットワークの接続状況を表示 - Linux入門 - Webkaru
ホストOSのWindowsとゲストOSのCentOS7をネットワーク接続
ネットワークの設定
- NAT(Network Address Translation)の設定
- ホストオンリーアダプター
※ ブリッジアダプターというネットワークを設定すると、ゲストOS(ここではCentOS7)から直接外部ネットワークに接続することができるようですが、その際はセキュリティをかなり意識しないとマズそうです。(今回は割愛)
2018年3月31日(土):追記
イメージ図としては、
⇧ 上記サイト様の図が分かりやすいと思います。
NATはデフォルトで設定されているようなので、ホストオンリーアダプターのネットワークを追加していきます。
VirtualBoxで作成した仮想マシン(CentOS7)の仮想NIC(ネットワークインターフェイスカード)、つまりネットワークを
- NAT
- ネットワークカード
の2つにしていこうと思います。
NICについては、
⇧ 上記サイト様によりますと、インターネット通信には必須ということのようです。
ちなみに、VirtualBoxのネットワークは、仮想マシンごとに設定できますが、
⇧ 上記サイト様によりますと、最大8個までいけるようです。
ホストオンリーアダプターの設定
『ファイル』 > 『環境設定』 > 『ネットワーク』 > 『ホストオンリーネットワーク』の順に選択していきます。
右にある『ホストオンリーネットワークを追加』アイコンを選択します。
作成されたネットワークを選択して、右の『ホストオンリーネットワークを編集』アイコンを選択します。
IPv4アドレスに設定したいIPアドレスを設定(ホストOSであるwindowsのコマンドプロンプトで『ipconfig』コマンドを打って表示される項目の中に、『イーサネット アダプター VirtualBox Host-Only Network:』というものがあるので、その中の『IPv4アドレス』を指定します。)
VM(仮想マシン)のイメージが並んでる画面に戻って、追加したホストオンリーネットワークを使用したいVM(仮想マシン)のイメージを右クリックし、『設定(S)』を選択します。
『ネットワーク』>『アダプター2』を選択します。
『ネットワークアダプターを有効化(E)』にチェックをし、
『割り当て(A)』を『ホストオンリーアダプター』にし、
『名前(N)』を今作成したアダプター『Virtual Box Host-Only Ethernet Adapter』へ変更します。
『OK』ボタンをクリックします。
仮想マシンを起動し、GUIログインしたら、『アプリケーション』>『お気に入り』>『端末』を選択し、『ip a』コマンドを実行します。
『enp0s8』のinetの項目にIPアドレスが追加されてれば、OKです。
『exit』コマンドで終了します。
TeraTermのインストール
Linuxでは標準でsshコマンドが使えるようですが、windowsでは標準でSSHクライアントが用意されていません。
TeraTermというソフトウェアを導入することで、windowsコンピューターからLinuxマシンにSSHで接続できるようになります。
⇩ 下記サイトでインストーラーをダウンロードできます。
・Tera Term (テラターム) プロジェクト日本語トップページ - OSDN
・http://sourceforge.jp/projects/ttssh2/
左下の『ダウンロード』からバージョンを選択します。
今回は『Tera Term 4.85(2014年11-30)』 というものを選択しました。
『teraterm-4.85.exe』を選択します。
ファイルがダウンロードされた、ファイルをダブルクリックします。
『実行(R)』ボタンをクリックします。
『日本語』を選択し『OK』ボタンをクリックします。
『次へ(N)>』ボタンをクリックします。
『同意する(A)』にチェックし、『次へ(N)』ボタンをクリックします。
特に何も変更せず、『次へ(N)>』ボタンをクリックします。
後で変えられるようなので、ここでは何も変更せず『次へ(N)>』ボタンをクリックします。
『日本語』を選択し、『次へ(N)>』ボタンをクリックします。
特に何も変更せず『次へ(N)>』ボタンをクリックします。
下記項目にチェックし『次へ(N)>』ボタンをクリックします。
『インストール』ボタンをクリックします。
『完了(F)』ボタンをクリックします。
『Tera Term』がインストールされました。
Tera Termで仮想マシン(CentOS7)にSSH接続
VirtualBoxを起動し、仮想マシン(CentOS7)を起動し、GUIでログインしておきます。
次に、Tera Termを起動させます。
『スタート』>『Tera Term』を選択します。
『ホスト(T)』に『ホストオンリーアダプター』で追加されたIPアドレスを入力します。
ゲストOS(CentOS7)の端末で『ifconfig』コマンドで表示された『enp0s8』のinetの項目にあるIPアドレスのことです。
初回接続時のみ、セキュリティ警告ダイアログが表示されますが、 特に何も変更せず『続行(C)』ボタンを選択クリックします。
仮想マシン(CentOS7)でログインした時の情報を『ユーザー名』『パスフレーズ』に入力したら、『OK』ボタンを選択クリックします。
ホストOS(Windows7)からゲストOS(CentOS7)に接続されました。
『exit』コマンドで接続を閉じることができます。
WinSCPをインストール
Tera Termは、SSH接続を行うだけなので、ファイルのアップロード・ダウンロードを行うには、WinSCPというソフトウェアをインストールする必要があります。
windowsでscp(sshを使ってネットワーク・ホスト間でファイルを安全にコピーするためのコマンド)を利用するのに、WinSCPというソフトウェアが必要です。
ダウンロードされたファイルをダブルクリックします。
『実行(R)』をクリックします。
『次へ(N)>』ボタンを選択クリックします。
『Japanese - 日本語』
特に何も変更せず『次へ(N)>』ボタンを選択クリックします。
特に何も変更せず『次へ(N)>』ボタンを選択クリックします。
『完了(F)』ボタンを選択クリックします。
『インストール』ボタンを選択しクリックします。
『ホスト名(H)』に、ゲストOS(CentOS7)の端末で『ifconfig』コマンドで表示された『enp0s8』のinetの項目にあるIPアドレス(Tera Termで入力したのと同じIPアドレス)を入力し、『ユーザー名(U)』『パスワード(P)』に、ゲストOS(CentOS7)にログインした時の情報を入力します。
『保存(S)』ボタンを選択クリックすると、接続情報が保存されます。
VirtualBoxで接続先の仮想マシン(CentOS7)が起動してる状態にしておいてから、
『ログイン』ボタンを選択クリックします。
『パスワード(P)』 を求められるので、『ログイン - WinSCP』で設定したパスワードを入力し『OK』ボタンをクリックします。
『ホストOS(パソコン本体のwindows7)』『ゲストOS(VirtualBoxの仮想マシンのCentOS7)』がSFTP接続されました。
⇩ SFTPなどについては下記サイトへ
ファイルを、ドラッグ&ドロップすることでファイルのコピーができます。
左が『ホストOS』、右が『ゲストOS』です。
『権限がありません(エラーコード:3)』が表示される場合は、たいてい、ゲストOS(CentOS7)側でフォルダに権限が制限されてるため(所有者が『root』になってる)だと思われます。
【対策】
ゲストOS側で、所有者が『ユーザー(/home/ユーザー名)』となっているディレクトリ(『chmodコマンドなどでファイルの権限を変更していない場合』)に移れば、ホストOS側からゲストOS側にファイルは送れます。下の画像のように所有者が『ユーザー』なら『Permission dinied』のエラーは起きないと思います。
そうしておいてから、ゲストOS(CentOS7)上で『mvコマンド』でファイルを移動するのも1つの手だと思います。
・mvコマンド(それぞれの間には半角スペースを空ける。 )
・[オプション]
(※『-f』オプションがない場合でも同じ名前のファイルが存在した場合、上書きされる可能性があるので注意が必要です。)
⇩ mvコマンドについて詳しくは下記サイトへ
ゲスト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権限でリモートサーバーのファイル編集を可能にする | モノレビュー
今回はこのへんで。