OpenSSH を使う

2011.10.8更新 (SSH簡易バージョン、cygwinでSSHについて記載)。

SSH があれば、離れたマシンの自分のアカウントへのリモートログインとログイン後の遠隔操作が可能です。 sftp によるファイル転送もできます。

[1] 必要なもの(パッケージ)

[2] 設定(簡易バージョン)

とくに設定の必要はなし。 上記パッケージをインストール後、ssh デーモンを起動すれば、 すぐ使えるようになっている。

[3] 使い方

たとえば、マシン foo(192.168.0.3) をSSHクライエント、 マシン hoge(192.168.0.7) をSSHサーバとしよう。 マシン foo のユーザ suzuki さんが マシン hoge の suzuki アカウントにリモートログインしたいとする。

suzuki@foo ------> suzuki@hoge
[SSH client]         [SSH server]

それには suzuki さんはマシン foo の端末で

$ ssh suzuki@hoge

と打ち込んで、そのあとsuzuki@hoge のパスワードを入れればいい(もちろん suzuki@foo さんは suzuki@hoge さんのパスワードを知っているということが前提だけど同じ人物なら知ってるはずだよね)。

ログイン後、foo の端末は

[suzuki@hoge suzuki]$ (プロンプト)

のように変ってるはず。 あとはテキストの出入力のような単純な作業に限っては、 マシン hoge の前に座って suzuki さんとして仕事をしているのと同じ状態になる。

ssh がインストールされてれば sftp もできるはず。

$ sftp suzuki@hoge
(suzuki@hoge のパスワード入力)

ここまでは同じ。あとはふつうの ftp とほとんど同じ画面が出てくる。 コマンドも ftp と同じ。 put (file) で (file) をSSHサーバへアップロード、 get (file) で (file) をSSHサーバからダウンロード、 等など。

[4] cygwin で SSH を

cygwin にSSHをインストールすれば、 Windowsマシンからもネットワーク上の Linuxマシン(Windowsマシンとは別)に接続することが可能です。 もちろん Linuxマシンが SSHサーバであることが前提。

cygwin の SSH は Net のカテゴリーのなかにある openssh というのがそれです(下の図を参照)。 これにチェックを入れダウンロード&インストールすれば完了です。

[cygwin の画面 1]

[cygwin の画面 2]

[5] 設定(高セキュリティバージョン)

以下は昔書いたもの。秘密鍵・公開鍵と難しいことを書いています。 何を書いているのか今では自分にも分かりません(2011.10.7)。

・・・・・・

以下の順序で設定を行っていきます。

  1. SSH server の設定
  2. SSH client の設定
  3. SSH server の設定 2
  4. SSH server の設定 3

以下、それぞれの手順を説明していきます。

[6] SSH server の設定

以下ではSSHサーバに用いるマシンのホスト名を SS とします。

はじめにSSHサーバの /etc/ssh/sshd_config を編集して

PasswordAuthentication no

とします。

# cd /etc/init.d
# ./sshd restart

と打って、デーモンをリスタートさせます。

[7] SSH client の設定

SSHクライアントのホスト名を SC とします。

SSHクライアント SC のユーザ hoge はホームディレクトリで

$ ssh-keygen -t dsa

と打ちます。

※ dsa の代わりに rsa を使うこともできます。

パスフレーズの入力を訊かれるので、適当なパスフレーズを考案して、それを入力します。

すると ~/.ssh に

の二つのファイルが作成されます。 これらがユーザ認証用の鍵対となります。 id_dsa が private key(秘密鍵)で、 id_dsa.pub が public key(公開鍵)です。

公開鍵 id_dsa.pub を一旦、フロッピーなどにコピーします。

[8] SSH server の設定 2

公開鍵 id_dsa.pub をフロッピーからSSH server に authorized_keys という名前でコピーします。

パスは /home/hoge/.ssh/authorized_keys です。

[9] SSH server の設定 3

/etc/hosts.allow を下のように編集します。

sshd: 127.0.0.1, 192.168.0.0/255.255.255.0

以上で準備は整いました。

[10] ssh を使ってみる

コマンド ssh は telnet に相当するリモートログインコマンドです。

※ ssh へのシンボリックリンクに slogin があります。 従って以下で ssh の代わりに slogin と入れてももちろん可です。

SSHクライアント SC で

$ ssh hoge@SS

と打つと、

The authenticity of host 'SS (192.168.0.7)' can't be established.
RSA key fingerprint is ea:71:dd:86:03:4a:4d:02:1f:73:ca:55:ca:47:3c:a2.
Are you sure you want to continue connecting (yes/no)? 

と訊かれるので、ここでは SS を信頼して yes を選択します。 つづいて

Warning: Permanently added 'SS,192.168.0.7' (RSA) to the list of known hosts.
Enter passphrase for key '/home/hoge/.ssh/id_dsa': 

とパスフレーズを訊かれるので、先ほど設定したパスフレーズを入れます。

パスフレーズが正しければ、ユーザ認証は成功し、ログインができて

Last login: Sun May 22 03:01:32 2005
[hoge@SS hoge]$ 

のような画面が現れます。

ログアウトするには

$ exit

するだけです。

一度、SSHでログインを行うと、 クライアント SC の ~/.ssh には known_hosts ファイルが作成されています。

[hoge@SC .ssh]$ ls
id_dsa  id_dsa.pub  known_hosts
[hoge@SC .ssh]$ cat known_hosts 
SS,192.168.0.7 ssh-rsa AAAAB3NzaC1y・・・・・・(以下略)
[hoge@SC .ssh]$ 

※ この known_hosts というファイルのなかみはホスト認証用の公開鍵で、対応する秘密鍵はSSに /etc/ssh/ssh_host_rsa_key.pub として保存されています。