2019年9月18日
  • Just another WordPress site

SSHサーバーの設定ーパスフレーズ無しでクライアントからログインする【訂正加筆】

Debian/Ubuntuは、サーバーOSとしてもデスクトップOSとしても、おもちゃではなく、実務で使えます。また、一切の使用料金はかかりません。ここが、サーバーとクライアントをわざと分離し、法外なカネをふんだくっているMicrosoftのWindowsと違うところです。Windowsに席巻されている限り、日本のIT(情報技術)は発展しません。サイト管理者の持論ですが、それはさておき、1台のSSHサーバーに、複数のubuntuクライアントから①平文によるパスワード認証でログインする②パスワードログインをやめ、公開鍵と秘密鍵によるパスフレーズ認証でログインする③複数のサーバーの同期を取るため、公開鍵と秘密鍵を使いつつ、パスフレーズなしにログインするーの三通りの方法を説明します。

【1】インストールと平文のパスワード認証によるログイン

Ubuntu14.04LTSをインストールすると、openssh-clientはインストールされているようですが、opensssh-serverはどうか分かりませんので、

$ sudo apt-get install openssh-server openssh-client

とやります。設定ファイルは/etc/ssh/sshd_configで、初期設定ではパスワード認証になっています。

ssh-large-image

なので、$ ssh user@ip_addrでSSHサーバーへのIDとパスワード認証によるログインが可能になります。次に、クライアントのUbuntuで公開鍵と秘密鍵を作成し、公開鍵をSSHサーバーに転送して鍵認証とパスフレーズによるログイン方法について説明します。インターネット上のサーバーを管理する方法は、鍵認証です。

【2】鍵認証とパスフレーズ打ち込みによるSSHサーバーへのログイン

次のコマンドで、公開鍵と秘密鍵を作成します。

michiaki@ubuntu05:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/michiaki/.ssh/id_rsa): 
Created directory '/home/michiaki/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/michiaki/.ssh/id_rsa.
Your public key has been saved in /home/michiaki/.ssh/id_rsa.pub.
The key fingerprint is:
e3:dd:f1:da:5d:d7:44:3c:25:e7:07:d0:ad:66:ab:af michiaki@ubuntu05
The key's randomart image is:
+--[ RSA 2048]----+
|            .oo.o|
|              .*o|
|               o=|
|              +.o|
|        S   .o ..|
|       . o . o...|
|        . . ... +|
|            .o .o|
|            Eoo .|
+-----------------+

これで、クライアントのホームディレクトリの./.ssh/に公開鍵id_rsa.pub, is_rsaができます。次に公開鍵をSSHサーバーに転送します。先取りですが、パスフレーズを入力せずにエンターキーを押せば、パスフレーズなしにサーバーにログインできます。ただし、これはLAN内のサーバーへのログインに限定すること。

scp id_rsa.pub SSHサーバーのIPアドレス:/home/user/.ssh

転送するときにパスワードを求められます。転送に成功すれば、SSHサーバー上でauthorized_keysにid_rsa.pubを付け加えます。

cat id_rsa.pub >> authorized_keys

こうしておいて、SSHサーバーの設定ファイルを少し書き換えます。50行目辺り。Ubuntu14.04LTSの場合は、下記がデフォルトの設定になっているようです。

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

これを、

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

とします。

このあと、sudo service ssh resartでsshのデーモンを再起動すると、鍵認証によるクライアントからのログインが可能になります。

【追記】(2014年○月☓日午前11時14分)

デフォルトの設定状態ですと、平文のパスワード認証が優先されるようです。鍵認証が優先されるようです。もし、鍵認証がうまく行かなければ、次に平文のパスワード認証でのログインになります。なのでまず、鍵認証とパスフレーズによるログインを確認して下さい。その後で、デフォルトのコメントを外して「no」にしておき、SSHサーバーのデーモンを再起動させる必要があります。その後、鍵認証とパスフレーズ入力でがログイン出来るかどうか再確認して下さい。鍵認証にならなければ、「no」にして見て下さい。

【追記終わり】

【追記】(2014年9月17日午前01時50分)

鍵認証でログインできない場合、次のようなメッセージが出ることがあります。

Agent admitted failure to sign using the key.
(Permission Denied.)

その場合は、クライアント側で

user@ubuntu $ ssh-add

を試してみてください。

Identity added: /home/michiaki/.ssh/id_rsa (/home/michiaki/.ssh/id_rsa)

と出れば、うまくサーバーにログインできるようです。ssh-add は認証エージェントであるssh-agent  に、秘密鍵を追加するコマンドです。引数なしで実行された場合、これは、~/.ssh/id_rsa ,~/.ssh/id_dsa ,~/.ssh/id_ecdsa ,~/.ssh/id_ed25519および~/.ssh/identityの各ファイルを追加します。通常は、id_rsaです。

【追記終わり】

ただし、SSHサーバーに直接ログインできない場合は、操作が間違うとアウトです。サーバーをデータセンターなどに設置している場合は、データセンターにノートパソコンを持ち込んで、秘密鍵id_rsaの有効性を確認しておく必要があります。最近のノートはたいがいがUbuntu14.04LTSに対応しています。WindowsでPuttyを使っても良いですが、まあ、由緒あるUNIX系統のUbuntu14.04LTSをノートパソコンに入れましょう。USBにisoファイルを書き込み(展開)すれば、BIOSで1st起動をUSBにしておけば、インストールできます。EEEEPC1001x?にはUbuntu14.04LTSをインストールしています。

こうした操作をクライアントの数だけ行い、SSHサーバーのホームディレクトリ/.sshの中のauthorized_keysの末尾にクライアントで作成したid_rsa.pubを追加すれば、各クライアントからログインできるようになります。

cat id_rsa.pub >> authorized_keys

ただし、サーバーのユーザー・ディレクトリ.sshのパーミッションは700、authorized_keysのパーミッションは600で、ユーザー名、グループ名は同じものにしておいて下さい。

【3】パスフレーズなしの鍵認証によるログインについて

これは、ssh-keygen -pとpオプションを使います。そうすると、古いパスフレーズを聞かれ、正しく入力すれば、新しいパスフレーズの新規入力と確認入力を求められますが、ここは単に改行キーを押すだけです。そうすると、パスフレーズなしの公開鍵id_rsa.pubと秘密鍵id_rsaが生成されます。後は、同じくscpコマンドで、公開鍵をSSHサーバーに送り、authorized_kesに付け加えるだけです。これでsshコマンドを使い、ssh SSHサーバーのIPアドレスとやれば、木゜すフレーズ入力なしにログインできます。

Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sun Jul 13 20:22:19 JST 2014

  System load:  0.0               Processes:           79
  Usage of /:   8.5% of 17.59GB   Users logged in:     1
  Memory usage: 7%                IP address for eth0: 192.168.1.101
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

Last login: Sun Jul 13 20:22:19 2014 from ubuntu01.it-ishin.com

ログインが確認できれば、sshd_configで設定しているパスワード認証を不可にし、sshサーバーを再起動させます。その部分は、

#PasswordAuthentication yes となっているのを
PasswordAuthentication no として
sudo service ssh restart

というふうにすれば良いです。外部のVPSサーバーないしデータセンター内に設置したサーバーにアクセするには、鍵方式が不可欠で、平文のパスワード認証にしておくと、クラッキングされてしまいます。普通は、鍵認証+複雑なパスフレーズでがっちり固めておく必要があります。

コメントを残す

CAPTCHA