リモートアクセス/ネットワークセキュリティ

  1. 実習の前準備
  2. リモートアクセス
  3. ネットワークセキュリティ

※ 2020 年度は "local" として各自の PC を, "remote" として joho18 を想定して実習を行います.

2. ssh を用いたリモートアクセス入門

[2.1] ssh を用いたリモートログイン

ssh を用いてリモートログインしてみましょう. ssh は通信内容を 暗号化するので, パスワードを盗まれる危険性が減ります.

自分のアカウントを作成した計算機(リモートホスト)にリモートログインしてみましょう.

local$ ssh hoge@johoXX.ep.sci.hokudai.ac.jp
    
< hoge にはリモートホスト上でのアカウント名, XX にはリモートホストの情報実験機番号(2桁)を記述. 
ローカルホストとリモートホストでアカウント名が同じ場合は「hoge@」の部分を省略できます.
	

初めてリモートログインすると以下のようなメッセージが流れます.

The authenticity of host '192.168.16.1XX (192.168.16.1XX)' can't be established.
ECDSA key fingerprint is 49:bb:4d:9b:98:58:4e:22:7a:a2:55:5f:89:f2:93:27.
Are you sure you want to continue connecting (yes/no)? 
    

ssh は通信を暗号化する際にリモートホストの「公開鍵(ECDSA key)」を用いています. そしてこのメッセージは「相手の公開鍵をもらっても良いか?」という 確認にあたります (公開鍵方式の暗号化については第11回(メール配送の仕組み)を参照してください). ここでは質問に対して "yes" を返して下さい.

無事ログインできれば、リモートホストのプロンプトが返ってきます.
user@johoXX$
      
< プロンプトに表示されている "アカウント名@johoXX" の "johoXX" が, 
情報実験機の番号になっているのが確認できます. 
      


[2.2] リモートログインした状態でのコマンド実行

リモートホストにログインした状態で, ファイルを作成してみましょう.

remote$ echo "remote_command_test" > test.txt        
< リダイレクトを利用して, 適当な txt ファイルを作成します. 

作成したファイルが正しく作られているか確認してみてください(ls, cat, less などを使う). このように, リモートホスト上でもローカルホストと変わりなく作業ができることが リモートアクセスの利点です.

リモートホストからログアウトする場合は以下のように logout コマンドを実行します.

remote$ logout        
< リモートホストからログアウトします

リモートホストからローカルホストへ X クライアント (アプリケーションの一種. X window system については次回参照) を「飛ばしたい」, つまりリモートホストで起動した X クライアントをローカルホスト上に表示させたい場合は -X オプションを付けて ssh ログインします. ログインした後, X クライアントの一つである xeyes を飛ばしてみて下さい.

local$ ssh -X hoge@johoXX.ep.sci.hokudai.ac.jp        
< XX には情報実験機番号(2桁)を記述 ※ 2020 年度は行わない
remote$ xeyes        
< リモートホストで起動した xeyes がローカルホストに飛んできます.
ctrl + C で終了できます. ※ 2020 年度は行わない

xeyes はデスクトップ上のマウスカーソルを追いかける目が出現するアプリケーションです. 今回のようにリモートログインをした状態で xeyes を起動した場合, ローカルホストのデスクトップ上のカーソルの位置情報が ssh 接続を介してリモートホストに送られており, 「カーソルを追いかけた場合の適切な目の位置の決定」という演算処理は リモートホストの CPU で処理されます. そしてその処理結果が再び ssh 接続を介してローカルホストに送られ, 「決定された位置へと実際に目を動かす」という処理が ローカルホストの CPU によって行われています.
xeyes は軽量なアプリケーションなので恩恵は薄いのですが, より演算処理の大変な作業をおこなう場合, 処理自体は高性能な リモートホストに任せれば, 低性能なローカルホストでも負担をかけずに実行結果だけを見ることができます.


[2.3] sftp を用いたファイル転送

sftp はファイル転送のために使われるコマンドで, ssh プロトコルを用いて通信内容を暗号化するという利点があります. 使い方は以下の通りです.

local$ sftp "username"@"hostname"
sftp> "command"

リモートホスト -> ローカルホストの場合は "command" として "get ファイルのパス" を, ローカルホスト -> リモートホストの場合は "put ファイルのパス" を入力することでファイルの転送ができます.
アクセスするディレクトリを指定する際は
アカウント名@リモートホスト名:ディレクトリの絶対パス
という書式で指定します(未指定の場合はホームディレクトリ).

先に作成した test.txt をリモートホストからローカルホストへ転送してみましょう. test.txt はリモートホストのホーム領域に存在するものとし, test.txt をローカルホストのカレントディレクトリ (現在自分のいるディレクトリ)に転送するものとします. その場合は以下のようになります.

local$ sftp hoge@johoXX.ep.sci.hokudai.ac.jp
sftp> get test.txt sftp> exit
< XX には情報実験機番号(2桁)を記述
local$ cat test.txt       
< 転送されたファイルを見る(Windows Powershell の場合)
local$ type test.txt       
< 転送されたファイルを見る(コマンドプロンプトの場合)



>> 次ページへ

最終更新日: 2020/07/03 関口 太郎 更新 Copyright © 2002-2020 inex