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