OpenSSHには、個人的に何度も苦労しているので、ココらへんで接続確立手順をまとめておこうと思う。

環境

  • SSHサーバ Ubuntu Ubuntu 12.10 (vmware上で起動)
  • SSHクライアントCygwin 1.7.17-1(Windows 7上で動作)

Windows上のCygwinからvmware上のUbuntuにSSHするまでを目指す。

OpenSSHとは

OpenSSHについてもまとめておく。OpneSSHとは、SSH通信をするためのフリーソフト/ツール。SSHとは、暗号技術を利用して安全に情報をやりとりするためのプロトコル。SSHのウレシイところは、パスワードなしで自由に他のコンピュータと通信ができるところだ。公式サイトはココ。

OpenSSH

OpenSSHに必要なもの

サーバ側の設定

UbuntuにSSHサーバをインストールする。以下のコマンドで取得。

$sudo apt-get install openssh-server

次に、SSHサーバの設定ファイルを編集します。これも管理者権限でオープン。

$sudo emacs /etc/ssh/sshd_config

PasswordAuthentication というの項目をyesに変更。PasswordAuthenticationはパスワード認証を許可するかどうかの設定。defaultではコメントされている。また、今回はRSA暗号を使うため、設定ファイルでRSAを有効にしておく。

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes

RSAAuthentication yes
PubkeyAuthentication yes

最後に設定を反映するために、サーバを再起動します。

$sudo /etc/init.d/ssh restart

クライアント側の設定

cygwin側にもSSHクライアントを導入します。setup.exeからopensshを取得してインストールします。

OpenSSH通信の確立

クライアント側で鍵生成

クライアント側で暗号鍵を生成します。ここではRSA暗号方式を採用。一番有名なので。以下のコマンドで$HOME/.sshに秘密鍵と公開鍵が作成される。パスワード入力が求められるが、ここではなにも入れずにEnterをおす。

  • id_rsa(秘密鍵)
  • id_rsa.pub(公開鍵)

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/TSUNEMICHI/.ssh/id_rsa):
Created directory ‘/home/TSUNEMICHI/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/TSUNEMICHI/.ssh/id_rsa.
Your public key has been saved in /home/TSUNEMICHI/.ssh/id_rsa.pub.
The key fingerprint is:
78:af:12:31:f3:e2:b5:12:93:cc:8d:97:5e:36:5b:5c tsu-nera@TSUNEMICHI-VAIO
The key’s randomart image is:
+-[ RSA 2048]–+
| |
| |
| |
| +. E |
| o.OS. . . |
| X.*.+ o |
| . O +.+ |
| + o.. |
| o. |
+——+

クライアントの公開鍵をサーバに送信

クライアントの公開鍵をサーバに送ります。安全のために、ここではscpコマンドを使うのがよいでしょう。

$ scp ~/.ssh/id_rsa.pub tsu-nera@192.168.118.129:
The authenticity of host ‘192.168.118.129 (192.168.118.129)’ can’t be established.
ECDSA key fingerprint is 3e:0c:49:ce:a0:14:79:82:bd:88:02:9d:1a:7c:d3:c0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.118.129’ (ECDSA) to the list of known hosts.
tsu-nera@192.168.118.129’s password:
id_rsa.pub 100% 406 0.4KB/s 00:00

サーバ側で公開鍵の認証登録をする

ここからは、サーバの設定です。まずは、クライアントの公開鍵を保存するためのディレクトリを作成。アクセス権限は自分だけに与えます。そうしないと、パスワードを聞かれる。(ココてハマった)

$ mkdir .ssh
$ chmod 700 .ssh

$ ls -al|grep ssh
drwx– 2 tsu-nera tsu-nera 4096 4月 13 12:49 .ssh

次に、クライアントの公開鍵をauthorized_keysというファイルに覚えます。覚えさせたら、クライアントの公開鍵はすみやかに削除しましょう。

$ cat id_rsa.pub » .ssh/authorized_keys
$ rm id_ras.pub

.ssh/authorized_keysのアクセス権限も変更します。

$$ chmod 600 .ssh/authorized_keys

ちなみにauthorized_keysてはなくauthorized_keys2の場合もあるらしい。Ubuntuではauthorized_keysがデフォルト。うまくいかない場合は、設定ファイルで以下の項目を確認するとよい。

$ grep AuthorizedKeysFile /etc/ssh/sshd_config
AuthorizedKeysFile %h/.ssh/authorized_keys

クライアント側からアクセスしてみる

準備完了。クライアント側からアクセスしてみる。

$ ssh tsu-nera@192.168.118.129
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-18-generic i686)

Last login: Fri Apr 12 20:50:51 2013 from 192.168.118.1
<tsu-nera@tsunera-virtual-machine:~$>

アクセスできたら、サーバ側の設定ファイルでパスワード認証を解除する。

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

最後に設定を反映するために、サーバを再起動します。

$sudo /etc/init.d/ssh restart