計算機基礎 - 第14回: UNIX を使ってみよう (5) - SSH
Table of Contents
1. SSH によるリモートログイン
SSH (Secure SHell) は,ネットワーク越しに別のコンピューターを安全に遠隔操作するための通信プロトコル (データ通信の規格) です。
通信内容やパスワードがすべて暗号化されるため,インターネットなどの安全ではないネットワーク環境でも,盗聴や改ざんを防ぎながら安全にサーバー管理やファイル転送を行えます。
関連したコマンドに ssh, scp, sftp, rsync などがあります。
ssh- 遠隔ログインするためのコマンド
scp- ファイルを転送 (コピー) するためのコマンド (非推奨になったらしい)
sftp- ファイルを転送 (コピー) するためのコマンド
rsync- ファイルやディレクトリを転送 (コピー) するためのコマンド (差分のみを転送できるため高速)
SSH に関する詳しい情報はインターネットで調べてください。
2. SSH でサーバにログインする
今回は SSH の練習として,情報センターのサーバである
cc2000.kyoto-su.ac.jp に SSH でログインしてみましょう。
パスワード認証による接続
まずパスワード認証で接続できるかテストします。ターミナルで ssh コマンドにログインしたいユーザ名と接続先を指定して実行します。
$ ssh g1234567@cc2000.kyoto-su.ac.jp
ここではユーザ g1234567 で cc2000.kyoto-su.ac.jp に接続しています。ユーザ名には各自のメールアドレスの ID を指定してください。
はじめて接続するサーバの場合,サーバの証明書を受け入れるか確認されるので, yes と答えてください。
パスワード入力が求められたら,パスワード (メールや moodle などのパスワード) を入力します。
接続できたら cc2000 上で以下のコマンドを実行してください。
(cc2000$ は cc2000 のシェルプロンプトを表します)
cc2000$ mkdir .ssh cc2000$ chmod 700 .ssh
exit でいったん切断します。
cc2000$ exit # サーバから抜けて $ # ノートPCに戻った
公開鍵と秘密鍵の作成 (ノートパソコン側での作業)
認証に使用する公開鍵と秘密鍵を作成します。作成には ssh-keygen コマンドを使います。
以前は RSA 暗号がよく使われていましたが,より高速で高いセキュリティを実現する Ed25519 (楕円曲線暗号) が使われるようになっています。
$ ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/home/hanako/.ssh/id_ed25519): ※エンターキー Created directory '/home/hanako/.ssh'. Enter passphrase (empty for no passphrase): ※パスフレーズを入力 Enter same passphrase again: ※パスフレーズを再入力
鍵ペアの作成にはパスフレーズが必要です。パスフレーズはパスワードとは異なるものを使うのが安全ですが,混乱する人が多いので,慣れるまではパスワードと同じにしておけばよいでしょう。
これでユーザのホームディレクトリの下に .ssh ディレクトリが作成され,秘密鍵 id_ed25519 と公開鍵 id_ed25519.pub が作成されます。
公開鍵をサーバに設置する
公開鍵をサーバに設置します。
ssh-id-copy コマンドを使用します。
$ ssh-copy-id g1234567@cc2000.kyoto-su.ac.jp
ssh-id-copy コマンドがない場合は以下のコマンドを実行してください。
$ cat ~/.ssh/id_ed25519.pub | ssh g1234567@cc2000.kyoto-su.ac.jp "cat >> ~/.ssh/authorized_keys"
公開鍵認証で接続する
再度 ssh コマンドで cc2000 に接続してみます。パスフレーズを訊かれるので,鍵の生成時に指定したパスフレーズを入力します。パスフレーズは手元にある秘密鍵の復号に使われるもので,サーバには送られません。
$ ssh g1234567@cc2000.kyoto-su.ac.jp Enter passphrase for key '/home/hanako/.ssh/id_ed25519': ※パスフレーズを入力
設定ファイルの作成 (ノートパソコン側での作業)
.ssh/config は ssh の動作を調整するための設定ファイルです。サーバごとにユーザ名などを指定することができます。
Host cc2000
HostName cc2000.kyoto-su.ac.jp
User g1234567
といった設定を書いておくと,
$ ssh cc2000
だけで cc2000.kyoto-su.ac.jp にログインできるようになります。
nano を使って以下のような内容の .ssh/config を作成しておきましょう。
(ユーザ名は各自のものに変更すること)
Host cc2000
HostName cc2000.kyoto-su.ac.jp
User g1234567
Host *
Compression yes
ForwardAgent yes
ForwardX11 yes
ServerAliveCountMax 6
ServerAliveInterval 20
TCPKeepAlive yes
3. 進んだ設定
keychain, ssh-agent, sshpass といったツールを使うとパスフレーズを自動入力することができます。
Mac の場合,キーチェーン (Keychain) と連携させるもできるようです。
- keychain 導入方法 https://zenn.dev/kikudai/scraps/77e8abce71093e
- ssh-anget の使い方 https://qiita.com/j-yabu/items/8fb3ae7caee69292e706
- macOS Keychain https://mono96.jp/web/ai-agent/85314/
他にもいろいろ便利な設定があるので,興味のある人はインターネット上の情報を調べてみるとよいでしょう。
4. タッチタイピング
毎分120文字を目指して練習してきた成果はいかがでしょうか。
今日は インターネットでタイピング練習 の「ローマ字タイピング」の「腕試しレベルチェック」でスコアを測ってみましょう。あとで調査するので最高スコアを覚えておいてください。