SSH(Secure SHell)は2台の(?)コンピュータ間の通信プロトコル。SSHのサービスを提供するコンピュータをSSHサーバ、SSHサーバに接続するコンピュータをSSHクライアントと呼ぶ?
このプロトコル一つでTelnetとかFTPみたいなことができるっぽい。すなわち、他のパソコンに入り込んだり、他のパソコンからファイルをダウンロードすることが出来る。しかも通信は暗号化されTelnet,FTPより安全?
SSHサーバプログラムのインストールは以下のコマンドを打つだけでよい気がする。ちなみに、SSHのクライアントプログラムはDebian etchに最初から入ってた気がする。すなわち、sshコマンドは初めから使えた気がしないでもない。
$ su password: ルートのパスワード入力 # apt-get install openssh-server
デフォルトではセキュリティが不安らしい。設定ファイル/etc/ssh/ssh_configをいじるとよい。
sshでほかのパソコンに入り込み、webブラウザとか、PAWとかを立ち上げようとすると、初期設定では"cannot open display: (null)"とエラーメッセージが出て、ウィンドウが開かない。
ウィンドウを開くには、クライアント側の設定を行う。sshコマンドを打った端末を一回閉じ、再び端末を開き$ su とかコマンドを打ってrootユーザーになったら、/etc/ssh/ssh_configを開く。# ForwardX11 noってところの、#を取ってForwardX11 yesに変更。
これで、webブラウザとかPAWとか使える。東工大ポータルサイトにログインしなくても、旭/中村研ネットワーク?に入り込んでブラウザを立ち上げれば、論文が自由に閲覧できるので便利。
SSHのポートフォワード機能を用いて、トンネルを作る。これにより、外部ネットワークから、内部ネットーク内のPCにアクセスし直接ファイルをアップロード/ダウンロードできる。
Local_1というPCから、Remote_1を経由し、Remote_2というPCにアクセスすることを考える。Remote_1、Remote_2ではともにsshd(SSH daemon;SSHのサーバープログラム?)が動いていて、それぞれのPCにアカウントを持ってなければならないかも。Remote_1, Remote_2上のアカウントをusername_1, username_2とし、パスワードをpassword_1, password_2とする。rootのパスワードとかは知らなくても大丈夫っぽい。
Local_1にてCygwinを起動し、以下のコマンドを打つ。
$ ssh -L 1234:Remote_2:22 Remote_1 -l username_1 # ポート番号の1234は任意。他の数字でもよい。 username_1@Remote_1's password: username_1のパスワード入力
これで、トンネルができた。$ exitとかコマンドを打つと、トンネルが閉じる。
メモ)
$ ssh -L 1234:Remote_2:22 Remote_1 -l username_1 は、$ ssh -L 1234:Remote_2:22 username_1@Remote_1 と書いてもよいかも?
Local_1にてPuttyを起動し、SessionのHost Name(or IP address)ところにRemote_1と入力。Portは22のままにしとく。
次に、Connection - SSH - Tunnelsを選択し、Source port に 1234, Destination に Remote_2:22と入力。したらば、Addボタン、Openボタンを押し、接続開始。ウィンドウが開くので、以下のように入力。
login as: username_1 username_1@Remote_1's password: password_1
これで、トンネルができた。
トンネルを使い、Local_1から、Remote_2にアクセスするには、Local_1にて、localhost:1234または、127.0.0.1:1234にアクセスすればよい。
localhostとは、自分自身のPCを示す特別なホスト名?127.0.0.1も同様に、自分自身のPCを示す、特別なIPアドレス?1234は前述で用いたポート番号。
例えば、WinSCPでRemote_2にアクセスするには以下のようにする。
ただし、WinSCP自身もポートフォワード機能(?)を持つため、CygwinやPuttyでトンネルを作らなくとも、自前でトンネルを作る。接続方法は、以下のとおり。
書体 | 意味 | 例 |
---|---|---|
AaBbCc123 | 端末の表示する文字。またはコードなど。 | $ You have mail. |
AaBbCc123 | ユーザーが入力する文字。 端末の表示する文字と区別する。 | $ su password: |
AaBbCc123 | コマンドの引数やコードの可変部分。 実際の名前や値と置き換える。 | $ rm filename |