Ubuntu Weekly Recipe

第40回 クライアント・サーバ環境の活用(1)

この記事を読むのに必要な時間:およそ 4 分

sshの利用

ターミナルを中心に作業している方はすでにインストールし,活用しているかもしれませんが,ssh(openssh-server/openssh-client)を利用することでもファイルのやりとりが可能です。

$ sudo apt-get install openssh-server

各マシンにopenssh-serverをインストールしておくと,次のような機能が利用できます。

scpによるファイルコピー

SSHを導入することで,scpを用いたファイルコピーを利用することができます。scpの利用条件は単にSSHで相手ホストにログインできることだけですから,SSHを利用する環境では設定を行う必要がありません。

基本的には次のように,cpコマンドの代替としてscpを利用するだけです。

$ scp 192.168.200.10:Desktop/file ~/Desktop

また,これはコマンドライン以外からも利用することができます。⁠場所]⁠⁠サーバへ接続..]を選び,⁠サービスの種類」としてSSHを選択し,サーバ名・フォルダ・ユーザ名を指定します図1)⁠このようにして接続することで,Nautilus経由で自動的にSSH接続を行い,通常のディレクトリと同じように閲覧することができます注3)⁠

図1 SSHによる接続

図1 SSHによる接続

ssh-keygenとssh-agentによる認証

SSHは便利な機能ですが,scpのような方法で頻繁にコピーする場合に,その都度パスワードを入力する必要があります。scpを積極的に利用する場合,ssh-keygenを用いて鍵を生成し,認証手段として公開鍵認証を用いると良いでしょう。

公開鍵による認証を用いるには次のように行います。

まずssh-keygenコマンドを用い,鍵ペアを生成します。⁠Enter passphrase」⁠Enter same passphrase again」では秘密鍵のパスフレーズを入力してください。パスフレーズは「あなたにしか分からず,かつ,忘れにくいもの」にする必要があります。パスワードと異なり,スペースを含めることもできますので,充分に長く,そして忘れにくいものにしてください。目安としては10文字から15文字程度あり,辞書に掲載された単語が含まれていなければある程度安全だと言えるでしょう。また,生成した秘密鍵は他人に入手できないように厳密に管理してください。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/account/.ssh/id_rsa): 
Created directory '/home/account/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/account/.ssh/id_rsa.
Your public key has been saved in /home/account/.ssh/id_rsa.pub.
The key fingerprint is:
cd:13:da:2d:c9:9b:cc:c8:7f:06:83:9f:03:dd:a1:9f account@hostname
The key's randomart image is:
+--[ RSA 2048]----+
||
||
|                  .|
|                * +.|
|              SoOo..|
|             .o+==.|
|              oo== .|
|               .+ E|
|                .+|
+----------------+

ssh-keygenを行って生成されたファイルのうち,~/.ssh/id_rsa.pubにあるファイルを他のマシンの~/.ssh/authorized_keysに保存します。もっとも単純な方法は,次のように操作することでしょう。

client$ scp ~/.ssh/id_rsa.pub server:.ssh/id_rsa.pub.temp
client$ ssh server
server$ cd ~/.ssh
server$ cat id_rsa.pub.temp >> authorized_keys
server$ rm id_rsa.pub.temp

このようにしてauthorized_keysに登録することで,SSH接続時に鍵ペアを利用した認証を行うことができます。接続時に秘密鍵のパスフレーズを入力してください。

さらに,繰り返し認証を行わないといけない場合,次のように操作します注4)⁠これにより都度パスフレーズを入力せずにscpを利用できます。

$ ssh-agent bash
$ ssh-add
(秘密鍵のパスフレーズを入力)
$ (scpなどの操作を行う)
$ exit

zshによるscp越しの補完

scpを利用する場合,シェル上ではパスの補完が機能しません。このような場合はzshを導入し,zshを利用することでscp時にも補完を機能させることができます。

まずzshをインストールしてください。

$ sudo apt-get install zsh

ssh-agentを起動する際,bashではなくzshを起動することで,補完を利用することができます。

$ ssh-agent zsh
$ ssh-add
(秘密鍵のパスフレーズを入力)
$ (scpなどの操作を行う)
$ exit
注3)
これはscpではなくsftpで実現されています。
注4)
ここではssh-agentを確実に終了させることを確認するため,新規にシェルを起動し,必要がなくなった時点でシェルを終了する,という操作を行っています。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。