タスク概要
| タスク名 | 内容 |
|---|---|
| メイン課題 | SSH接続とポート転送を設定し、hello_world.pyを実行 |
| タスク1 | 開発マシン上で基本的なLinuxコマンドを実践 |
| タスク2 | VS Codeでリモート接続し、conda環境を新規作成 |
| タスク3 | test.shスクリプトを作成・実行 |
SSH接続とポート転送の基礎
SSH(Secure Shell)は、暗号化された安全な通信チャネルを提供するネットワークプロトコルです。リモートサーバーへのログインやファイル転送に広く利用され、認証とデータ暗号化により安全性を確保します。
SSHはクライアント/サーバーモデルで動作し、TCP接続確立後、双方が共通鍵を生成して以降の通信を暗号化します。鍵認証を設定することで、毎回のパスワード入力を省略できます。特にクラウド開発環境を利用する際には、ローカルPCから遠隔でコード編集・実行を行うため不可欠な技術です。
ポート転送の必要性
開発用マシン上でWebアプリケーション(例:GradioベースのUI)を起動した場合、ブラウザ経由でのアクセス時に外部リソースが正しく読み込まれないことがあります。これはプロキシ環境下での制限によるものです。
これを回避するためにポート転送(ポートフォワーディング)を利用します。ローカルホストの特定ポート(例:7860)をリモートマシンの対応ポートにトンネル接続することで、直接アクセスしているかのように動作させます。
実装例:Gradioアプリ
import socket
import re
import gradio as gr
def fetch_device_id():
device_name = socket.gethostname()
match = re.search(r'-(\d+)$', device_name)
return match.group(1) if match else "unknown"
with gr.Blocks(theme=gr.themes.Soft()) as app_ui:
content = f"""
<div style="text-align:center">
<img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" width="20%"/>
<h1>☁️ ユーザー {fetch_device_id()} さん、ようこそ!</h1>
<h2>😀 学習の旅へ出かけましょう!</h2>
<img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" width="20%"/>
</div>
"""
gr.HTML(content)
app_ui.launch()
VS CodeのRemote-SSH拡張機能を使えば、ポート転送は自動で処理されます。端末を開き(Ctrl+Shift+~)、右側の「ポート」タブからローカルURL(例:http://127.0.0.1:7860)でアクセス可能です。
必須Linuxコマンド集
- ファイル操作
touch file.txt— 空ファイル作成
mkdir dir— ディレクトリ作成
cp -r src dest— 再帰的コピー
mv old new— 名前変更/移動
rm -rf dir— 強制削除(再帰) - リンク作成
ln -s /path/to/target link_name— シンボリックリンク作成(推奨)
※ハードリンクは同一ファイルシステム内のみ有効 - 検索・処理
find . -name "*.py"— 拡張子で検索
find . -type f -size +100M— 100MB超のファイル
sed -i 's/foo/bar/g' file.txt— ファイル内文字列置換
grep -n "error" log.txt— 行番号付き検索 - プロセス管理
ps aux | grep python— 特定プロセス検索
top— リアルタイム監視
kill -9 PID— 強制終了
nvidia-smi— GPU使用状況確認
開発環境構築ツール
tmux — セッション永続化
長時間実行タスク(例:モデルファインチューニング)では、接続切断による中断を防ぐためにtmuxが有用です。
# Ubuntu環境でのインストール
sudo apt update && sudo apt install tmux
# 新規セッション開始
tmux new -s training
# セッションから一時離脱(Ctrl+B → D)
# 再接続: tmux attach -t training
conda — 仮想環境管理
# Python 3.10環境作成
conda create -n myproject python=3.10
# 環境一覧表示
conda env list
# 環境削除
conda remove -n myproject --all
# 環境エクスポート(再利用用)
conda env export -n myproject > environment.yml
# 復元
conda env create -f environment.yml