お名前COMの共用サーバーにパスワード入力を簡略化sshログインする方法

お名前COMの共用サーバーには、今までSSHログインする機能はありませんでした。
2015年6月16日よりSSH接続機能が提供され、ログインできるようになっています。

お名前COMへSSHログインする方法は、お名前COMのマニュアル類を参考にしてください。


お名前COM共用サーバーSDでSSHする際の課題


現在、お名前COM共用サーバーSD-11を契約しています。


  • sshでログインすると、~/、ホームディレクトリ下の権限がありません。

    ~/.cshrc, ~/.bashrc、~/.ssh/などが作成することができません。
    現時点では、一般的な公開キーを用いたsshパスワードの省略が行えません


  • 慣れの問題ですが、ユーザー名が特殊です

    $ ssh ユーザー名@sshホスト名
    ユーザー名は、sd9999999@gmoserver.jpです
    なので、ssh sd999999@gmoserver.jp@ssh99.gmoserver.jpというような感じになります。




個人の環境問題だと思いますが、macからsshログインする際、1回目のパスワード入力を失敗すると
アカウントロック的な状況に陥ってログインできなくなりました。

お名前COMの共用サーバー ちょっとセキュアなsshパスワード省略ログイン方法


先ほど課題で触れたとおり、公開キーを使うSSHパスワード省略ログインはできません。
クライアント側で工夫する方法しかありません。
この記事は、どちらかというとmacやlinuxからお名前COMにsshログインする方に適しています。
Windowsな環境の場合、WinSCPやputtyなどのキーワードで情報を探してください。
(確認は、osx el capitanで行っています)

公開キー以外のsshパスワードを省略する方法は、
expect(shellの対話プログラミング)、sshpass(SourceForge 引数でパスワードを渡せるプログラム)
の2つです。

expectで作ったshellは、環境に依存しやすいので、ここでは、sshpassを利用します。

sshpassのソースは以下sourceforgeにあります。コンパイルしてインストールしてください。
http://sourceforge.net/projects/sshpass/

sshpassの使い方


sshpass -p パスワード ssh ホスト名 -l ユーザ名 -o 'StrictHostKeyChecking no'

実際に実行中のsshpassプロセスは、ps -le等で見ても、パスワードがzzzzというような表示になって秘匿されています。

historyで確認すると、打ち込んだパスワードがそのまま残ってしまいます。
また、shellでパスワードを平文で残しておくのも、なんとなくやな感じがします。

一人しか使わないような環境では、シェルスクリプトにそのまま平文が最も簡単な方法です。

以下方法では暗号化しています、ただ、何者かが自分のユーザーでログインできてしまった場合、暗号化は破られます。なので、ちょっとセキュアな方法です。

スクリプト


sshpassは、~/local/binにインストールしてある状態です。

~/local/bin/mylogin.sh(ファイル名、パスは自由です)
#!/bin/sh
ssh_agent(){
host=$1
user=$2
f=~/.ssh/${user}@${host}.rsa;
PASSWORD=$(openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in ${f})
~/local/bin/sshpass -p ${PASSWORD} ssh ${host} -l ${user} -o 'StrictHostKeyChecking no'

}


お名前COM sshログインスクリプト(適切なファイル名でお願いします)
ex) ~/onamae-ssh.sh
#!/bin/sh
. ~/local/bin/mylogin.sh
ssh_agent ssh99.gmoserver.jp sd999999@gmoserver.jp



これでスクリプトの準備は完了です。chmod +xで実行可能にしておきます。

sshログインパスワードの暗号ファイルの用意


opensslを使ってパスワードファイルを作成します。
~/.ssh/id_rsaファイルを使います。あらかじめ作成してください。

パスワードファイルは、~/.ssh/ユーザ名@ホスト名.rsaという形で準備します。
(これ本当はどこでも、なんでもいいです、ただ先のスクリプトと対になっているので、変更する場合はスクリプトも変更してください)

$ echo 'パスワード' | openssl rsautl -encrypt -inkey ~/.ssh/id_rsa > ~/.ssh/ユーザ名@ホスト名.rsa

これで暗号化したパスワードができました。

パスワードは、ssh_agent()処理で復号されます。

使い方


~/onamae-ssh.sh
でお名前COM 共用サーバーSDにログイン出来ます。



 

↓↓レンタルサーバーのオススメはコレ!↓↓

 

 

posted by scripts at 12:55 | Comment(0) | TrackBack(0) | shell
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
http://fanblogs.jp/tb/4361519
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
最新記事
最新コメント
タグクラウド
カテゴリアーカイブ