lecture:apro:rplinux

学部の実習室 Ubuntu Linux 環境に学外から接続するためのサービスです。 この科目の TAチェックでは、以下で説明するリモート実習室環境 rp-linux にログインして TAが実行するサーバやクライアントとの通信を行う必要があります。

ネットワーク接続のためのコマンド ssh (Secure Shell) を用いて rp-linux へログインします。PowerShell やターミナル.app から以下の ssh コマンドを実行します。以下のコマンドの -p 80 は80番ポートへの接続、-l t190999 はログインユーザー名です。ユーザー名は自分のアカウント名を指定して下さい。

ssh -p 80 rp-linux.st.ryukoku.ac.jp -l t190999

接続後のパスワード入力では、キーボードからのタイプは表示されないので注意して下さい。 また、初回接続時には Are you sure you want to continue connecting (yes/no)? と尋ねられますが、yes とタイプして下さい。

ログインに成功すると、その端末は実習室環境に接続された世界です。

rp-linux に接続したターミナルで exit コマンドを入力するとリモート接続が切断されます。 また、rp-linux では一定時間ユーザーによる操作が行われないと自動でログアウトされる仕様になっています。

自分のローカルPCで作成したプログラムコードを、rp-linux 側へコピーする場合は scp(Secure Copy)コマンドを利用します。 ローカルPCのカレントディレクトリ(ワーキングディレクトリ)にある foo.py というファイルを、rp-linux のホームディレクトリへコピーしたい場合は、

scp -P 80 foo.py t190999@rp-linux.st.ryukoku.ac.jp:

のように実行します。-P 80(ssh と違って P が大文字)は接続ポート、ログインユーザー名は接続先ホスト名 rp-linux.st.ryukoku.ac.jp の前に @ を付けて指定します(t190999@)。また、リモートホスト名の最後に :(コロン)があることに注意して下さい。コロンの後に以下のようにコピー先ディレクトリを指定することもできます。

scp -P 80 foo.py t190999@rp-linux.st.ryukoku.ac.jp:~/aprog2020/.

接続とパスワード認証が成功すると、ネットワーク経由のリモートコピーが実行されます。通常の cp コマンドと同様に、コピー元とコピー先を入れ替えることでリモート環境からローカルPC上にファイルをコピーすることも可能です。

scp -P 80 t190999@rp-linux.st.ryukoku.ac.jp:~/aprog2020/foo.py .

Windows10 で scp を実行する際に、ファイルが存在しているにも係わらず

No such file or directory. (そんなファイルやディレクトリ無いです!)

とエラーが出ることがあります。そのような場合、主に以下の2つが原因です。

  1. ファイルが置かれているディレクトリのフルパスやファイル名に日本語が使われている(e.g. C:/Users/さの/myFolers/echoClient.py)
  2. ファイルが置かれているディレクトリが OneDrive上にある(e.g. C:/Users/sano/OneDrive/echoClient.py)(OneDrive!またおまえか!)

このような場合、上記に該当しない場所(例えば C:\Users\Public など)にファイルをコピーしてから scp するとうまくファイルが認識されます。

教訓:日本語ユーザー名やディレクトリ・ファイル名はなるべく利用しない。OneDrive に注意!

ssh で rp-linux にログインしようとすると、以下のようなメッセージが出力され接続に失敗することがあります。 これは、rp-linux リモート接続サービスでは、rp-linux.st.ryukoku.ac.jp というホスト名でアクセスした際、実際の ssh ログイン先はシステムによって自動的に割り当てられて実際に ssh ログインする計算機が毎回異なることが原因です。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:z+3OkMNAYSvCIMNtVyGDH4ud7jgmuuu03JRswmAsphk.
Please contact your system administrator.
Add correct host key in /Users/sano/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/sano/.ssh/known_hosts:48
ECDSA host key for [rp-linux.st.ryukoku.ac.jp]:80 has changed and you have requested strict checking.
Host key verification failed.

これを解決するためには、以下のコマンドを入力します(Windows10 であれば ssh-keygen.exe)。

ssh-keygen -R rp-linux.st.ryukoku.ac.jp

上記で失敗する場合(sshコマンドのバージョンによる)は、

ssh-keygen -R "[rp-linux.st.ryukoku.ac.jp]:80"

を試してみてください。

また、再接続時に以下のようなメッセージが出た場合は、初回接続時と同様に yes を入力して下さい。

The authenticity of host '[rp-linux.st.ryukoku.ac.jp]:80 ([133.83.30.74]:80)' can't be established.
ECDSA key fingerprint is SHA256:z+3OkMNAYSvCIMNtVyGDH4ud7jgmuuu03JRswmAsphk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[rp-linux.st.ryukoku.ac.jp]:80,[133.83.30.74]:80' (ECDSA) to the list of known hosts.

これらの再接続時の Warning を抑制したい場合は、ssh コマンドに -o 'StrictHostKeyChecking no' (あるいは、-o 'StrictHostKeyChecking=no')オプションを追加するか、.ssh/config ファイルに

StrictHostKeyChecking no

(または、StrictHostKeyChecking=no)を設定します。その他、公開鍵を共有して ssh ログイン時のパスワード入力を省略する方法などもありますので、興味のある人は ssh コマンドのマニュアルやWeb検索などを使って調べて下さい。

  • lecture/apro/rplinux.txt
  • 最終更新: 2020/11/24 22:29
  • by sano