Archive for the ‘Linux’ Category

keyboard-key-success-online-computer-the-business

ロリポップのライトプランからスタンダードプランに変更したところ、SSH接続が使えるようになったので、使おうと思ったのですが、物凄くIDもパスワードも長いし、なおかつパスワードの変更ができないので、パスワード認証は早々に諦めました。

調べると鍵認証ができるようで、そちらに切り替えたので備忘録的に書いておきます。

鍵認証のやりかた

まずはローカルで鍵を生成します。

$ cd .ssh/
$ ssh-keygen -t rsa -f id_rsa_loli

この際、パスフレーズを尋ねられるので入力しておくのがいいと思います。
後で鍵を使ってログインする時に、はじめの一度だけ尋ねられるので、よりセキュアです。

さてそうすると

.ssh/id_rsa_loli
.ssh/id_rsa_loli.pub

ができたはずです。

次にサーバー側に移動

サーバー側のホームディレクトリに.sshディレクトリがなければ作ります。
そしてそのなかに、authorized_keysファイルを作ります。

$ mkdir .ssh
$ touch ./ssh/authorized_keys

そうしたらローカルの.ssh/id_rsa_loli.pubの情報をリモートの./ssh/authorized_keysに書き込まなくちゃいけません。
何らかの方法でファイルを転送して

$ cat id_rsa_loli.pub >> authorized_keys
$ chmod 600 authorized_keys

を行います。
ローカル側の秘密鍵のパーミッションも600にしないと、この鍵のパーミッションはtoo open(ガバガバすぎる)と警告が出て使えません。

最後に、ローカルの~/.ssh/にconfigファイルを作って
その中に

stricthostkeychecking no
Host loli
  HostName sshXXXXXX.lolipop.jp
  Port     2222
  User     hoge.piyo
  Identityfile id_rsa_loli

と書き加えます。
これで準備完了。

最後に

ssh loli

と入力したらパスフレーズを尋ねてくるので、それを入力すると接続出来ます。

以後は

ssh loli

と入力するだけでパスワード抜きで接続できます。

ロリポップ/SSHでパスワード無しで接続する(チカッパプラン) [俺の基地]

こちらの記事をおおいに参考にさせていただきました。
ありがとうございます。

terminal

何回か忘れたのでメモ。

du -ma | sort -rnk1 | top -20

du
-m : メガバイト表示
-a : すべて表示

sort
-r : 通常昇順表示なので、それの逆順、降順表示
-n : 数値として認識
-k1 : 一列目の要素を使って並び替え

top
-20 : トップ20行目までを表示

terminal

pecoっていうのは標準入力に受けた情報を複数のキーワードによって絞り込み検索できる便利な奴なんです。
こんな感じで。

peco
※画像は[Mac] zsh+oh-my-zsh環境にpecoを導入&初期設定を行う | vdeepさんからお借りしました。

まず、PecoはGoLangのパッケージですので、Goをインストールします。

こちらを参考にさせてもらいました。
Ubuntu12.04にGoを入れてPecoが使えるようになるまで(bash編) - Qiita

wget, git がなければ入れておく

sudo apt-get -y install wget
sudo apt-get -y install git-core

ソースコードDL & インストール

wget https://go.googlecode.com/files/go1.2rc2.linux-amd64.tar.gz
sudo tar zxvf ~/go1.2rc2.linux-amd64.tar.gz -C /usr/local

.zshrcに追記

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

確認

source .zshrc
which go

Peco のインストール & 設定
インストール(数秒待つ)

go get github.com/peco/peco/cmd/peco

これで

which pecoと打ってみるとpecoの場所が表示されているようなら準備OKです。pecoが使えるようになりました。

ためしに

ls | peco

などやってみて動作を確認してみましょう。

pecoでコマンド履歴の検索をできるようにする

一応mac用とlinux用両方貼っておきます。

# OS 別の設定
case ${OSTYPE} in
    darwin*)
        #Mac用の設定
        #履歴検索にPecoを使用
        function peco-history-selection() {
        BUFFER=`history -n 1 | tail -r  | awk '!a[$0]++' | peco`
        CURSOR=$#BUFFER
        zle reset-prompt
        }

        zle -N peco-history-selection
        bindkey '^R' peco-history-selection
        ########################################
    ;;
    linux*)
        #Linux用の設定
        #履歴検索にPecoを使用
        function peco-select-history() {
        local tac
        if which tac > /dev/null; then
            tac="tac"
        else
            tac="tail -r"
        fi 
        BUFFER=$(\history -n 1 | \
            eval $tac | \
            peco --query "$LBUFFER")
        CURSOR=$#BUFFER
        zle clear-screen
        }

        zle -N peco-select-history
        bindkey '^r' peco-select-history
        ########################################
    ;;
esac

Linux用のc-rでヒストリーをpecoに渡す方法はここじゃなくて別の所でみた気がするんだけど、同じコードだったので、こちらを参考にさせていただきました。

oh-my-zsh の環境で、peco-select-history が動かない - Qiita

MacOS用の履歴をpecoで見るコマンドは結構情報が多いのだが、linux用は少なかったので見つけるのに苦労した。

自分で書いてみたけど、上手く動かせなかった。まだまだシェルスクリプトは学ぶべきところが多いです。

で上の参考コードを見つけたという事です。

tacがなければtail -rを実行しているようだけれども、僕の環境ではtailに-rというオプションはそんざいしなかった。

なので実際には

function peco-select-history() {                           
    BUFFER=$(\history -n 1 | tac | peco --query "$LBUFFER")
    CURSOR=$#BUFFER                                        
    zle clear-screen                                       
}                                                          
zle -N peco-select-history                                 
bindkey '^r' peco-select-history                           

こう書きなおして使っている。シンプルで見通しやすくなった。

ということでlinuxでもpecoで履歴の参照ができるようになりました。

通常、bash,zshでは一文字でコマンド履歴を検索しなければなりませんが、pecoを使うと1つ以上の単語のアンドで履歴を絞り込めるのが大変便利。
絞り込んだ後に一覧から選べるので更に便利。

コマンド履歴は日頃しょっちゅう使うので導入に際しての費用対効果はかなり高い。

コマンド履歴に限らず、色んなシーンで使えて大変便利ですpeco。