Mac OS X で ssh-copy-id を使う

Mac OS X で ssh-copy-id を使う

SSH を使って、他の UNIX システムにリモートログインする場合、パスフレーズでの認証よりも RSA 証明書を使った公開鍵認証のほうがセキュリティ上好ましいとされています。

公開鍵認証での SSH 接続の方法は以下の手順が代表的です。

  1. SSH クライアント側で秘密鍵、公開鍵を作成
  2. SSH サーバ側にクライアント側で作成した公開鍵を外部に漏れない何らかの手段でコピー
  3. SSH サーバ側にて、正しいパーミッション設定で特定のディレクトリにコピーした公開鍵を保存
  4. SSH クライアント側からサーバ側に SSH 接続(鍵の作成の際に設定したパスフレーズを入力)

さて、Linux などには公開鍵をサーバ側にコピーし、正しいパーミッションを設定する ssh-copy-id という便利なコマンドがありますが、残念ながら Mac OS X にはデフォルトでは ssh-copy-id は用意されていません。しかし、ssh-copy-id コマンドの実態は単純なスクリプトのため、Mac OS X でも利用することができます。

1. RSA 秘密鍵、公開鍵を作成

まず、SSH 公開鍵認証に用いる、秘密鍵と公開鍵を作成します。デフォルトでは秘密鍵が ~/.ssh/id_rsa 、公開鍵が ~/.ssh/id_rsa.pub に作成されます。

下記コマンドを実行。

鍵の保存先とパスフレーズを求められます。

保存先は空白のままだと、デフォルトの ~/.ssh/id_rsa に保存されます。

作成の際にパスフレーズを入力しない場合、鍵を使った SSH 接続ではパスフレーズを入力する必要がなくなりますが、セキュリティ面を考えると、クライアント側を利用された場合にパスなしにリモートホストに SSH 接続できるため、おすすめできません。ローカルで使用する分にはいいかもしれませんが、個人の好みです。

2. ssh-copy-id が利用できる UNIX システムから ssh-copy-id のスクリプトファイルを確認

ssh-copy-id が利用できる UNIX システムにログインして、ssh-copy-id のスクリプトファイル確認。今回は CentOS6 を利用しています。

ssh-copy-id のスクリプトファイルの保存先を確認

CentOS6では以下のように表示されました。

確認した ssh-copy-id のスクリプトファイルの中身を確認して、Mac OS X で使えそうか判断します。

CentOS6 の場合は以下のようになっていました。ざっとみたところ Mac OS X でも使えそうです。

 3. ssh-copy-id スクリプトファイルを Mac OS X にコピー

確認した ssh-copy-id のスクリプトが Mac OS X でも使えそうだったら、スクリプトファイルを Mac OS X にコピーします。scp を使ったり、直接中身をコピーして、Mac OS X 側で新たにファイルを作成してもよいでしょう。

 4. ssh-copy-id コマンドを利用できるようにスクリプトファイルを PATH が通った先に配置

ssh-copy-id のコマンドを使えるように、コピーしたスクリプトファイルをPATH が通っているディレクトリにコピーします。

私の環境では、以下のように表示されました。

ssh-copy-id をパスが通っているディレクトリにコピーする

 

また、alias に登録してコマンドを利用する方法もあります。

~/.bash_profileに下記を追加

5. ssh-copy-id が使えるか確認

ssh-copy-id が使えるか確認する。下記コマンドを実行。

以下のように表示されれば OK です。