実習室 Ubuntu Linux リモート接続環境: rp-linux.st.ryukoku.ac.jp
学部の実習室 Ubuntu Linux 環境に学外から接続するためのサービスです。 この科目の TAチェックでは、以下で説明するリモート実習室環境 rp-linux にログインして TAが実行するサーバやクライアントとの通信を行う必要があります。
rp-linux へのログイン
ネットワーク接続のためのコマンド 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 とタイプして下さい。
ログインに成功すると、その端末は実習室環境に接続された世界です。
ssh コマンドは、Windows10、macOS 共に標準機能としてインストールされています。もし、Windows10 で ssh コマンドを実行しようとして以下のようなメッセージが出る場合は、Windows10 の ssh クライアントがアンイストールされています。
PS> ssh ssh: The term 'ssh' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
OpenSSH をインストールする|Microsoft Docs に従って ssh クライアントをインストールして下さい。
rp-linux からのログアウト
rp-linux に接続したターミナルで exit コマンドを入力するとリモート接続が切断されます。 また、rp-linux では一定時間ユーザーによる操作が行われないと自動でログアウトされる仕様になっています。
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つが原因です。
- ファイルが置かれているディレクトリのフルパスやファイル名に日本語が使われている(e.g. C:/Users/さの/myFolers/echoClient.py)
- ファイルが置かれているディレクトリが OneDrive上にある(e.g. C:/Users/sano/OneDrive/echoClient.py)(OneDrive!またおまえか!)
このような場合、上記に該当しない場所(例えば C:\Users\Public など)にファイルをコピーしてから scp するとうまくファイルが認識されます。
教訓:日本語ユーザー名やディレクトリ・ファイル名はなるべく利用しない。OneDrive に注意!
ssh 実行時の WARNING
ssh で rp-linux にログインしようとすると、以下のようなメッセージが出力され接続に失敗することがあります。 これは、rp-linux.st.ryukoku.ac.jp というホスト名でアクセスした際、rp-linux リモート接続サービスが複数の計算機の中の一台を自動的に割り当てるため、実際の 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検索などを使って調べて下さい。