ssh サーバに公開鍵をワンライナーで登録する方法
2014.05.09 追記
$ ssh-copy-id user@hostname
でいいかも。
(公開鍵ファイルを指定したい場合は -i オプションを使用する)
$ ssh user@hostname "echo `cat ~/.ssh/id_rsa.pub` >> ~/.ssh/authorized_keys"
以上。
たまにやりたくなるんだけどいつも忘れるのでメモ。
`〜` はローカル側のシェルで置き換えられてから ssh コマンドが実行され、echo 〜 はリモートサーバ上で実行される。
ちなみに bash の man の EXPANSION の項によると、
- ワード分割
- ブレース展開(a{b, c, d}e を abe, ace, ade に分割)
- チルダ展開(~ をホームディレクトリなどに展開)
- 以下の展開が同時に行われる(左から右の順で評価される)
- パラメータ、変数および算術展開(${〜} や $((〜)) を展開)
- プロセス置換(<(〜) や >(〜) を置換。名前付きパイプ(FIFO)をサポートしている環境のみ)
- コマンド置換($(〜) や `〜` を置換)
- ワード分割(ここまでの展開で生成されたワードに基づいて再度分割)
- パス名展開(* や ? や [〜] を展開)
の順で処理されてから実行されるようです。