ConoHaでVPSを借りて、SSH接続などの初期設定
先日ConohaでVPSを借りて、公開鍵認証でログインできるようになどしようとしたのですが、なかなかうまく行かず地味に時間がかかってしまった…
とりあえずやったことだけまとめておく。
今回やったこと
以下をやりました。
以上は、以下の記事を参考にさせて頂きました。ありがとうございました!
[1] ConohaにVPSを設置して、SSHログイン、ポート番号変更、rootログイン禁止までを30分で! - Qiita
[2] ヾ(o゚ω゚o)ノ゙ConoHaちゃんに作業用ユーザ追加してssh接続するやで! - Qiita
一旦パスワード認証でSSH接続してみる
以下を打ち込んで、接続確認。
$ ssh root@aaa.bbb.ccc.ddd -p 22 //パスワード聞かれるので、サーバ構築時に設定した9桁以上(だったはず)のパスワードを入れる
とりあえずログインできた。
root以外のユーザを作る
「galileo」というガリレオさんのユーザを作ることにします。
$ adduser galileo $ passwd galileo $ gpasswd -a galileo wheel
ユーザ作れた!
$ su galileo
これで作ったユーザでログイン。
[galileo@aaa-bbb-ccc-ddd ~]$
のようになっていれば、ログインできてるので、とりあえず以下でsudoできるかなどを確認
$ sudo echo "galileo now!!" //rootになるか確認 $su //rootになれるの確認したら戻ってきてね $su galileo
これでとりあえずユーザできたのでよいよい。
SSH接続(公開鍵認証で接続)
次は公開鍵認証でSSHできるようにします。
$ sudo vi /etc/ssh/sshd_config
でsshd_configを編集します。
そこそこ文字数多いので、viでうまいこと検索かけて以下のようにする。
//#←コメントついてたら消して、noならyesに RSAAuthentication yes //#←コメントついてたら消して、noならyesに PubkeyAuthentication yes //元々これになってたのでOK AuthorizedKeysFile .ssh/authorized_keys
終わったらこれで再起動
$ sudo service sshd restart
以上で公開鍵認証は使える設定になった気がするので、あとは秘密鍵と公開鍵を用意する。
このへんあまり知らないけど、基本的にはローカルPCで作って、公開鍵をVPS上に置くのが普通らしい?
ということで、一旦ローカルPCに戻ります。自分の場合はMacなので、Terminalを開く。
そして以下にディレクトリを作る。あるなら大丈夫だと思う。
cd ~/ mkdir .ssh
こんな感じにできた「/Users/galileo/.ssh」作った。
そしたら、.sshに移動して、公開鍵と秘密鍵を作る。
$ cd ~/.ssh $ ssh-keygen -t rsa -b 2048
ファイル名や、パスフレーズを聞かれるのでそのへんは適当に。
すると以下のようなのができる。
$ ls id_rsa id_rsa.pub
.pubが公開鍵で、付いてないほうが秘密鍵。
公開鍵はVPS上においてくる。
以下で、公開鍵をVPS上においてきます。
と、その前にまたコンソールに戻り、以下で新しく作ったユーザのホームディレクトリに.sshディレクトリを作成。
//以下は新しく作ったroot以外の自分用のユーザで行った $ cd ~/ // これで/home/galileoに移動 $ mkdir .ssh $ chmod 700 .ssh $ cd .ssh $ pwd // /home/galileo/.sshになってればOK
あとは「/home/galileo/.ssh」にローカル(Mac)から公開鍵を設置するだけ。
ローカル(Mac)に戻ります。
そして以下を実行。
$ sudo scp id_rsa.pub galileo@aaa.bbb.ccc.ddd:/home/galileo/.ssh
これで、VPS上に公開鍵を置けたので、再度VPSで作業します。(コンソールに戻る)
ここで、少し前に以下のコマンドで「AuthorizedKeysFile」を「.ssh/authorized_keys」としているので、
ファイル名を変更します。
============再掲=============
$ sudo vi /etc/ssh/sshd_config
//元々これになってたのでOK AuthorizedKeysFile .ssh/authorized_keys
=============================
$ mv id_rsa.pub authorized_keys $ chmod 600 authorized_keys
これで以下のコマンド叩けば、新しく作ったユーザでパスワード認証ではなく、公開鍵認証でSSHできるはず!
$ ssh galileo@aaa.bbb.ccc.ddd -p 22
パスワード認証をできなくする
変える場所は一箇所。
$ sudo vi /etc/ssh/sshd_config
をもう一度開いて、
//#←コメントついてたら消して、yesならnoに PasswordAuthentication no
$ sudo service sshd restart
rootからログインできないようにする
パスワード認証できなくする、とほぼおなじ感じに。
変える場所は一箇所。
$ sudo vi /etc/ssh/sshd_config
をもう一度開いて、
//#←コメントついてたら消して、yesならnoに PermitRootLogin no
$ sudo service sshd restart
SSH接続するportを22から変更
$ sudo yum install iptables-services
でiptablesをインストール。
$ sudo vi /etc/sysconfig/iptables
を開いて、
//以下の22の部分を -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT //こんな感じに使いたいポート番号に変更。 -A INPUT -p tcp -m state --state NEW -m tcp --dport 10022 -j ACCEPT
//iptablesを再起動 $ sudo service iptables restart
もう一点変更します。
何度も編集していますが、再度以下を編集!
$ sudo vi /etc/ssh/sshd_config
//「Port」で検索して、22になっている所を変更。 // #が付いてコメントになっていたらそれを取る。 Port 10022
$ sudo service sshd restart
$ ssh galileo@aaa.bbb.ccc.ddd -p 10022
で接続できた!!
接続を簡単にしましょう
ここまででだいたいOKだけど、ローカル(Mac)から接続を楽にするために、
「~/.ssh/config」を書きます。
ローカルPCに戻ったら、
「~/.ssh/config」
#ConoHa Host conoha HostName aaa.bbb.ccc.ddd User galileo Port 10022 IdentityFile ~/.ssh/id_rsa
を書いて保存しておく。
これで、ローカルPC(Mac)から
$ ssh conoha
ふー疲れた
とりあえず、VPSを借りてみたのでこれから勉強にもなるので、色々やっていきたいですな。
上にも書きましたが、本当に参考にさせて頂いてわかりやすかったので、以下の記事を再掲。
[1] ConohaにVPSを設置して、SSHログイン、ポート番号変更、rootログイン禁止までを30分で! - Qiita
[2] ヾ(o゚ω゚o)ノ゙ConoHaちゃんに作業用ユーザ追加してssh接続するやで! - Qiita
screenでウィンドウを一気に移動したり、順番を並び替えたり
screenでいくつもウィンドウを開いて作業していると、
C-a p C-a n
などでウィンドウを次へ、前へって移動するのではとてもだるい。
そんなときは、
C-a [ウィンドウのnumber] ex: C-a 3
と言った具合に、一気に移動ができる。
そして今回のタイトルのように順番を並び替えるには
例えば、ウィンドウが
「0 : window_0 ,1 : window_1 , 2 : window_2 , 3 : window_3」
となっている場合に、
window_3を1番目に持ってくる際には、
C-a 3 //移動させたいウィンドウに移動 C-a //一旦エスケープさせて :number 1 //移動先のウィンドウ番号を入力(今回は1番目のウィンドウ)
これで並び替えができるようだ。
mongoDBで errno:48 Address already in use for socket
mongoDBが起動できなくなった
mongoDBを使っていたら、以下の様なエラーが出て、起動できなくなった。
エラーメッセージは以下。
2016-03-16T00:08:29.602+0900 E NETWORK [initandlisten] listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017 2016-03-16T00:08:29.602+0900 E NETWORK [initandlisten] addr already in use 2016-03-16T00:08:29.602+0900 E STORAGE [initandlisten] Failed to set up sockets during startup. 2016-03-16T00:08:29.602+0900 I CONTROL [initandlisten] dbexit: rc: 48
この場合の対象は以下。
参考: (MongodbのDB変更 - kiita's blog)
$ ./mongo use admin db.shutdownServer()
mongoDBを一度シャットダウンしてしまう。
このあと、いつもどおり起動できるようになった。
一安心。
package-list-packagesのメモ
emacsのpackage-list-packagesについてメモ
参考
以下参考より引用。
(require 'package) ;; MELPAを追加 (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t) ;; MELPA-stableを追加 (add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t) ;; Marmaladeを追加 (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t) ;; Orgを追加 (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t) ;; 初期化 (package-initialize)
これをどこかに書いておき、範囲選択して「M-x eval-region」を実行。
「M-x package-list-packages」を実行して、目当てのパッケージを探す。
こちらもメモで、emacsの検索は「Ctrl + s」で入力して、検索。
検索結果が複数ある場合は再度「Ctrl + s」で次へ、「Ctrl + r」で前へ。
目当てのパッケージの行でカーソルとめて「i」を入力して選択し、
「x」を入力すると確認がでるので、「yes」と入力してインストールが始まる。
Macでscreenコマンド + emacs
screenのエスケープキーを変更
screenコマンドで、新しいウィンドウを開いたり、ウィンドウ切り替えたり、、、などなど
するときに、使うコマンドではCtrl + aでエスケープするようになっている。
これ、emacs使う時だとショートカットがバッティング?してしまい使いにくい。
行の先頭にカーソル持ってこようとして、Ctrl + aするとscreenのエスケープになってしまう。
そこで、エスケープキーを変更する。
やることは簡単で、
~/.screenrcを開く。(なかったので今回作った。)
開いたら、以下を書き込み保存。
escape ^Tt
以上を行えば、Ctrl + tでscreenのエスケープキーを設定できるので、
screen + emacsで使用するときでも、いつも通りemacsを使えそう。
今回は「Ctrl + t」としたが、ここは適宜使いやすいものを。
Unity 画面操作メモ
Unityを一度触ってから放置していたので, そろそろ再開しようかと.
しばらく触っていないだけで画面操作のショートカットも忘れているし, 歳を感じます...
まあ基本的には, マニュアルを見ればわかることですが.
Unity - マニュアル: シーンビューのナビゲーション
今回アレどうやるんだっけ?となったショートカット.
視点移動
macでは,
「二本の指でタッチして, そのまま左クリック&ドラッグ」することで, 回転が簡単にできる.
調べると, これ「Alt押しながら, 左クリック&ドラッグ」でもOKらしい.
※引用: Unity - マニュアル: シーンビューのナビゲーション
ショートカットを覚えておくだけで随分と作業が楽になるので, よく使うのは覚えておきたい.
Node.js で MongoDB を使ってみる
Node.jsでMongoDBを使ってみたので, 備考録.
セッションの保存先をMongoDBに変更もしてみます.
環境
- node v5.0.0
- MongoDB version v3.2.3
MongoDBを扱うためのモジュールをインストール
$ npm install mongoose $ npm install connect-mongo
MongoDBの起動
mongodb/bin以下のmongodを起動する.
$ ./mongod --nojournal --noprealloc --dbpath PATH
※PATHはDBの保存先らしい
実装
まずはMongoDBを使ってみる.
modelの定義についてはNode.js+Express+MongoDBでSessionを利用してログイン機能を実装 - Qiitaから丸っとお借りしました.
モデルのスキーマは自分の使いたい形にちょっと変更.
model.js
var mongoose = require('mongoose'); var url = 'mongodb://localhost/session'; var db = mongoose.createConnection(url, function(err, res){ if(err){ console.log('Error connected: ' + url + ' - ' + err); }else{ console.log('Success connected: ' + url); } }); // Modelの定義 var UserSchema = new mongoose.Schema({ id : String, timestamp : Date },{collection: 'info'}); exports.User = db.model('User', UserSchema);
あとはこのモデルを利用したいところで, 呼び出して使う.
例えば, app.jsで.
app.js
var model = require('./model.js'), User = model.User; var newUser = new User({ id : profile.id, timestamp : new Date().getTime() }); newUser.save(function(err){ if(err){ console.log(err); }else{ console.log ("Save OK!!"); } });
IDが12345のユーザを検索する場合は,
var query = {id:"12345"}; User.find(query, function(err, data){ if(err){ console.log (err); }else{ console.log(data); } }
次に, セッションストアとして利用する場合は,
app.js
var session = require('express-session'); var mongoose = require('mongoose'); //mongoDBに接続 mongoose.connect('mongodb://localhost:27017/session'); var sessionStore = new MongoStore({mongooseConnection: mongoose.connection}); app.use(session({ secret: 'secret', cookie: { httpOnly: false, maxAge: new Date(Date.now() + 60 * 60 * 1000) }, store: sessionStore }));
でいいみたい.
このような感じに入ってる.
以上, 備考録.
参考
参考[1] Node.js+Express+MongoDBでSessionを利用してログイン機能を実装 - Qiita
大変, 参考になりました.