Ubuntuでsshdの設定をしてリモートから接続できるようにする

sshdサービスの開始

違うマシンからこのUbuntuマシンに接続して、あれこれできたほうが便利なのでsshdの設定をしておく。
先ずは以下のようにしてインストール。

$ sudo aptitude install ssh

設定ファイルを見ると、rootでのログインが有効になっているのでこれを無効にしておく。

$ sudo vi /etc/ssh/sshd_config

PermitRootLogin no      ← noにしておく

あとは基本的にそのままでOK。PasswordAuthentication については現段階ではとりあえずyesにしておき、あとで一通り公開鍵の登録などが終わったらnoに変更して、パスワードによるログインを無効にしてしまうのがいい。

とりあえず、上記で設定ファイルの変更をしているので、sshdのサービスを再起動しておく。
サービス再起動後は念のため、ちゃんと起動しているか確認してみる。

$ sudo /etc/init.d/ssh restart

$ sudo lsof -nPi:22
COMMAND   PID  USER   FD   TYPE DEVICE SIZE NODE NAME
sshd    10283  root    3u  IPv4  49690       TCP *:22 (LISTEN)
クライアントマシン(Linux)からの接続

続いて、LAN内にもう1台Linuxマシンがあるとして、そのマシンから今回sshdの設定をしたUbuntuマシンに接続したいとする。
ここでは、接続しようとしているマシンをクライアント。
今回sshdの設定をしたUbuntuマシンをサーバ と呼ぶことにする。
また、クライアント、サーバ共にchibiユーザが存在していて、このchibiユーザが操作しているものとする。(ユーザ名は適宜置き換えてください)

クライアントからサーバにsshコマンドを発行すれば、パスワードでのログインは許可しているので、ユーザとパスワードが一致すれば問題無くログインできると思う。なので、次は鍵を利用してのログインをしてみる。
クライアント側(他のLinuxマシン)で以下のコマンドを実行して鍵の生成を行う。

$ ssh-keygen -t rsa

パスフレーズの入力を促される。パスワードだと思って何か文字列を打ち込んでやる。
なお、何も入力せずにEnterを押せば、空のパスフレーズの鍵を生成することができる。
以上で、クライアントの$HOME/.ssh/ 以下に id_rsa, id_rsa.pub が出来上がる。
id_rsa秘密鍵で、id_rsa.pubが公開鍵となる。id_rsa.pubを接続したい先のサーバに登録してやる。
id_rsa秘密鍵なので、このマシンで大切に持っておく。

とりあえず、この公開鍵(id_rsa.pub)をサーバに送ってやる。

$ scp .ssh/id_rsa.pub サーバのIPアドレス:~/

これで、サーバ側の$HOMEにクライアントのid_rsa.pubを転送できたので、以下のように登録してやる。
以下の作業はサーバ側(Ubuntuマシン)での操作となる。

$ mkdir .ssh    ← .ssh/ディレクトリが無かったので作成した
$ cat id_rsa.pub >> .ssh/authorized_keys

以上で完了なので、再びクライアントからサーバへsshコマンドで接続してみる。
今度は鍵方式での認証に変わっている。パスフレーズを空で登録した場合には、パスワードの入力などを一切せずログインすることが可能になる。

あと、普段使用しているマシンがWindowsで、このWindowsマシンから接続したいという場合は、sshクライアントのソフトを使えば可能。
ちなみに僕は、Poderosa というソフトを使用しています。

Windows用のsshクライアントのソフトによって鍵の生成の仕方などは違うので、ここでは省略するが、基本的にはLinuxクライアントマシンでやった作業と変わらず、鍵を生成したら公開鍵をサーバに転送してやり、サーバ側でその公開鍵を登録するという作業になる。
登録する時の注意点としては、$ cat id_rsa.pub >> .ssh/authorized_keys の「>>」の部分。
これを「>」としちゃったりすると、今まで登録した鍵が消えちゃうので注意。