SSH は secure shell の略で、暗号認証技術を利用してネットワーク上にあるコンピューターと通信するための手段である。具体的には、ssh
コマンドで、ネットワーク上のコンピューターにログインして、そのコンピューターに対して様々な操作を行えるようになる。また、scp
コマンドで、ネットワーク上のコンピューターにデータファイルを転送したり、そこからダウンロードしたりすることができる。
ssh による接続の確率
ssh
によるログインや scp
によるファイル転送ができるようにするためには、ローカルコンピューターとリモートコンピューター(サーバー)の信頼関係を築く必要がある。この際に、公開鍵認証とよばれる仕組みを利用する。
ローカルコンピューターとリモートコンピューター同士が公開鍵認証できるようにするために、ローカルコンピューターで公開鍵と秘密鍵のセットを生成し、次に公開鍵をリモートコンピューターに追加すればよい。これによって、
- ローカルコンピューター L からリモートコンピューター R に接続リクエストを送る。
- 接続リクエストを受け取った R は、ランダムな文字列を生成して、事前に登録された公開鍵でそのランダム文字列を暗号化して、L に送る。
- 暗号化されたランダム文字列を受け取った L は、秘密鍵で複合し、ランダム文字列を取り出す。続いて、そのランダム文字列をハッシュ化し、そのハッシュを R に送る。
- ハッシュを受け取った R は、自分自身が生成したランダム文字列をハッシュ化し、L から送られたハッシュと自分で計算したハッシュが一致すれば、接続を許可する。
ssh の設定
ローカルコンピューターで生成した公開鍵を、リモートコンピューターに登録するまでの手順はおおよそ次のようになっている。
手順 | ローカル | リモート |
1 | ローカルコンピューターで ssh の鍵ペア(公開鍵と秘密鍵)を作成する。
公開鍵(id_rsa.pub)を何らかの手段でサーバーに置く。
| |
2 | 公開鍵をサーバーのホームディレクトリ下にある .ssh ディレクトリ中の authorized_keys ファイルに追加する。このステップは、ほとんどの場合、公開鍵をメールに貼り付けて、サーバー管理者に知らせ、サーバー管理者に追加してもらう。 | |
3 | ssh コマンドで接続を試す。
|
この設定が完了すれば、以降、このサーバーに ssh
コマンドを利用して接続できるようになる。
2 段階ログインの設定方法
serverA にログインした後に serverB にログインする、という 2 段階ログインを、自動的に行えるように設定することができる。ssh の config ファイルに以下のような情報を書き加える。
Host A
HostName serverA.sample.ac.jp
User username
Port 8001
Host B
HostName serverB.sample.ac.jp
User username
Port 25
ProxyCommand ssh A nc %h %p
このように設定を済ませることで、ローカルパソコンから直接に serverB にログインすることができる。以下のようにコマンドを実行することで、まずホストの B に記載された ProxyCommand が実行されてホスト A(serverA)に接続する。その後に、ホスト B に接続する。ログアウト時に「Killed by signal 1.」となる警告文が見られるが、特に気にする必要はない。
ssh B