ssh

SSH は secure shell の略で、暗号認証技術を利用してネットワーク上にあるコンピューターと通信するための手段である。具体的には、ssh コマンドで、ネットワーク上のコンピューターにログインして、そのコンピューターに対して様々な操作を行えるようになる。また、scp コマンドで、ネットワーク上のコンピューターにデータファイルを転送したり、そこからダウンロードしたりすることができる。

ssh による接続の確率

ssh によるログインや scp によるファイル転送ができるようにするためには、ローカルコンピューターとリモートコンピューター(サーバー)の信頼関係を築く必要がある。この際に、公開鍵認証とよばれる仕組みを利用する。

ローカルコンピューターとリモートコンピューター同士が公開鍵認証できるようにするために、ローカルコンピューターで公開鍵と秘密鍵のセットを生成し、次に公開鍵をリモートコンピューターに追加すればよい。これによって、

  1. ローカルコンピューター L からリモートコンピューター R に接続リクエストを送る。
  2. 接続リクエストを受け取った R は、ランダムな文字列を生成して、事前に登録された公開鍵でそのランダム文字列を暗号化して、L に送る。
  3. 暗号化されたランダム文字列を受け取った L は、秘密鍵で複合し、ランダム文字列を取り出す。続いて、そのランダム文字列をハッシュ化し、そのハッシュを R に送る。
  4. ハッシュを受け取った R は、自分自身が生成したランダム文字列をハッシュ化し、L から送られたハッシュと自分で計算したハッシュが一致すれば、接続を許可する。

ssh の設定

ローカルコンピューターで生成した公開鍵を、リモートコンピューターに登録するまでの手順はおおよそ次のようになっている。

手順ローカルリモート
1ローカルコンピューターで ssh の鍵ペア(公開鍵と秘密鍵)を作成する。
ssh-keygen -t sra
公開鍵(id_rsa.pub)を何らかの手段でサーバーに置く。
2公開鍵をサーバーのホームディレクトリ下にある .ssh ディレクトリ中の authorized_keys ファイルに追加する。このステップは、ほとんどの場合、公開鍵をメールに貼り付けて、サーバー管理者に知らせ、サーバー管理者に追加してもらう。
3ssh コマンドで接続を試す。
ssh user@server.ac.jp

この設定が完了すれば、以降、このサーバーに 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