ホーム > サーバー
サーバーのアーカイブ
04.さくらインターネットVPSを使ってみる。〜emacsをインストール〜
注意事項
サーバー管理については全くの素人が調べながら書いているので、セキュリティ的に脆弱な設定方法などが多々あると思われます。詳しい方は優しくご指摘いただけると幸いです。
さてさて、怒濤の更新?を続けている今日この頃ですが、今日はサーバーにemacsというエディタをインストールしてみます。vi使いの方はスルーの方向で。
まずはいつもの様にsshで接続します。
1 | ssh root@xxx.xxx.xxx.xxx -t 40022 |
「yum」と言われる何でも簡単にインストールできるコマンドがあるのですが、今回はあえてソースからコンパイルしてemacsをインストールしてみます。
まずはemacsのソースをサーバーにダウンロードします。「curl -O http://ftp.gnu.org/pub/gnu/emacs/emacs-23.2.tar.gz」と入力するとダウンロードが開始されます。curlはURL越しに色々な操作ができるコマンドの様です。
1 2 3 4 | curl -O http://ftp.gnu.org/pub/gnu/emacs/emacs-23.2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 44.6M 100 44.6M 0 0 1347k 0 0:00:33 0:00:33 --:--:-- 2931k |
ダウンロードが完了したファイルは圧縮されているので解凍します。「tar xvfz emacs-23.2.tar.gz」で解凍を行い、解凍されたフォルダに「cd emacs-23.2」で移動します。
1 2 | tar xvfz emacs-23.2.tar.gz cd emacs-23.2 |
次に「./configure –without-x」と入力してEnterを押下します。configureはコンパイルする為のサーバーの各種情報を調べる様です。
1 | ./configure --without-x |
さて今度は「make」コマンドでソースをコンパイルします。コンパルが完了したら「make install」でインストールを行います。
1 2 | make make install |
最後に「emacs」と入力して下記の様なemacsのエディタ画面が表示されれば正常にインストールされています。emacsを終了するには「ctrl + x → ctrl + c」と入力します。
それではまた次回。
03.さくらインターネットVPSを使ってみる。〜複数のMacからssh接続〜
注意事項
サーバー管理については全くの素人が調べながら書いているので、セキュリティ的に脆弱な設定方法などが多々あると思われます。詳しい方は優しくご指摘いただけると幸いです。
さて、前回まででssh公開鍵暗号で接続することは出来る様になりました。が、自宅用Macと外出用Macなど複数台クライアントからサーバーに接続したい時があると思います。そこで、今回は複数のクライアントから接続できるように変更してみます。まあ、秘密鍵を複数登録するだけなんですけどね。。。
まずは、前回と同様で接続したいクライアントで公開鍵・秘密鍵を作成します。
「ssh-keygen -t rsa」で鍵を作ります。「Enter file in〜」ファイルを保存するみたいな事を聞いてくるのでそのままEnterを押下します。
最後に 「Enter passphrase」と聞いてくるので、適当な文字を入力してEnterを押下します。もう一度聞いてくるので再度おなじ文字を入力してEnterを押下します。
1 2 3 4 | ssh-keygen -t rsa Enter file in which to save the key (/Users/tochi/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: |
さて、ここからsftpで接続して秘密鍵を送信したい所ですが、サーバー側でパスワード認証を拒否するように設定したので接続できません。そこで、一度パスワード認証を許可して秘密鍵を送信してから再度パスワード認証を拒否するようにします。(この辺りもっとスマートなやり方があるんじゃないかな?)
さくらインターネットにはWebブラウザ経由でサーバーに接続できるリモートコンソールという機能があります。仮登録の際に届いたメールから「VPSコントロールパネル>リモートコンソール」にアクセスします。パスワード認証を拒否したのはssh接続からなので、リモートコンソールからはパスワードでログインする事ができます。
まずはログインするユーザーを「root」として入力し、次にパスワードを入力してログインを行います。
1 2 | root Password: |
次にsshの設定を変更します。「vi /etc/ssh/sshd_config」と入力します。
1 | vi /etc/ssh/sshd_config |
開かれたsshd_configの中に「PermitRootLogin without-password」という箇所があるので、下記の様に変更します。前回変更した場所ですね。
viでは入力する箇所で「i」キーを押下すると入力モードになります。変更したら「esc」を押下してコマンドモードに戻り「:wq」と入力して上書きして終了します。
1 | PermitRootLogin yes |
sshのサービスを再起動します。「/etc/rc.d/init.d/sshd reload」と入力すると「〜[OK]」と表示されれば正常に再起動されました。
1 2 | /etc/rc.d/init.d/sshd reload Reloading sshd: [ OK ] |
クライアントに戻って、sshで接続を試みるとパスワードで接続出来る様になっているはずです。ポート番号は変更しているのでポート番号指定は忘れずに。接続できたら一度ログアウトします。
1 2 | ssh root@xxx.xxx.xxx.xxx -t 4022 logout |
公開鍵をサーバーに送信します。「sftp -oPort=40022 root@【サーバーのIPアドレス】」と入力してEnterを押下するとパスワード入力が求められるのでパスワード入力してEnterを押下します。「sftp>」と表示されれば接続は完了です。sftpもssh経由でftp接続するのでsshのポート番号を変更した場合にはポート番号を指定して接続する必要があります。
1 2 3 | sftp -oPort=40022 root@xxx.xxx.xxx.xxx password: sftp> |
接続したら前回と同様に「put .ssh/id_rsa.pub」と入力してEnterを押下すると、「Uploading〜」と表示された後にファイルが送信されます。「quit」と入力してsftpを終了します。
1 2 3 4 | put .ssh/id_rsa.pub Uploading .ssh/id_rsa.pub to /root/id_rsa.pub .ssh/id_rsa.pub 100% 418 0.4KB/s 00:00 quit |
sshでサーバーに接続して、「cat id_rsa.pub >> .ssh/authorized_keys」と入力してサーバーの公開鍵に新しいクライアントの公開鍵を追記します。公開鍵にはコンピューター名などが記述されている様で、ひとつの鍵をコピーして使い回す事が出来なかったんですね。(本当はできるのかも。誰か、教えてください)
1 2 | ssh root@xxx.xxx.xxx.xxx -t 4022 cat id_rsa.pub >> .ssh/authorized_keys |
あとは再度パスワード認証を拒否するように設定し、サービスを再起動したら一度ログアウトします。
1 2 3 4 5 6 7 | vi /etc/ssh/sshd_config PermitRootLogin without-password /etc/rc.d/init.d/sshd reload Reloading sshd: [ OK ] logout |
sshで接続するとパスワード無しで、公開鍵認証方式でログインができるようになったと思います。
1 | ssh root@xxx.xxx.xxx.xxx -t 4022 |
それではまた次回。
02.さくらインターネットVPSを使ってみる。〜sshを公開鍵暗号で接続してみる〜
注意事項
サーバー管理については全くの素人が調べながら書いているので、セキュリティ的に脆弱な設定方法などが多々あると思われます。詳しい方は優しくご指摘いただけると幸いです。
さて前回のssh接続から少し発展して、もう少し安全な方法でssh接続を行うように設定します。
前回の方法だと毎回ログインする時にパスワードを入力しないといけません。
sshで通信が暗号化されていても、プログラムで色々なパスワードをランダムで試されてもし乗っ取られたら。。。orz
そこで、今回は公開鍵暗号化方式という方法でssh接続を行い、且つsshの接続するポートを変更して、さらにパスワードでのログインを無効化します。
では早速、まずはMacのターミナルを起動します。
そして、ここでサーバーには接続せずに、Macで公開鍵と秘密鍵を作ります。
「ssh-keygen -t rsa」で鍵を作ります。「Enter file in〜」ファイルを保存するみたいな事を聞いてくるのでそのままEnterを押下します。
最後に 「Enter passphrase」と聞いてくるので、適当な文字を入力してEnterを押下します。もう一度聞いてくるので再度おなじ文字を入力してEnterを押下します。これは鍵を作る為の「キーワード」みたいな物ですかね?
1 2 3 4 | ssh-keygen -t rsa Enter file in which to save the key (/Users/tochi/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: |
これでMacに公開鍵と秘密鍵が出来上がりました。確認してみましょう。「ls -al」と入力してEnterを押下すると現在のディレクトリの一覧が表示されます。一覧に「.ssh」というディレクトリが出来ていれば正常に作成できています。
1 2 | ls -al drwx------ 4 tochi staff 136 9 16 19:10 .ssh |
出来上がった鍵のうち公開鍵をサーバーに送信します。「sftp root@【サーバーのIPアドレス】」と入力してEnterを押下すると「Are you sure〜」と聞かれるので「yes」を入力してEnterを押下するとパスワード入力が求められるのでパスワード入力してEnterを押下します。「sftp>」と表示されれば接続は完了です。
1 2 3 4 | sftp root@xxx.xxx.xxx.xxx Are you sure you want to continue connecting (yes/no)? yes password: sftp> |
公開鍵を送信します。「put .ssh/id_rsa.pub」と入力してEnterを押下すると、「Uploading〜」と表示された後にファイルが送信されます。「quit」と入力してsftpを終了します。
1 2 3 4 | put .ssh/id_rsa.pub Uploading .ssh/id_rsa.pub to /root/id_rsa.pub .ssh/id_rsa.pub 100% 418 0.4KB/s 00:00 quit |
sshでサーバーに接続します。「ls -al」でディレクトリ一覧を見ると先ほど送信した「id_rsa.pub」が表示されると思います。
1 2 3 | ssh root@xxx.xxx.xxx.xxx ls -al -rw-r--r-- 1 root root 418 Sep 16 19:25 id_rsa.pub |
「mkdir .ssh」で.sshというディレクトリを作ります。そして「chmod 700 .ssh」でディレクトリの権限を変更し、「mv id_rsa.pub .ssh/authorized_keys」で公開鍵を.sshディレクトリの配下にauthorized_keysという名前で移動します。
ローカル、サーバー共に.sshフォルダは「chmod 700 .ssh」で、id_rsa、authorized_keysは「chmod 600 id_rsa」「chmod 600 authorized_keys」で権限変更を行ったほうがよさそう。
1 2 3 | mkdir .ssh chmod 700 .ssh mv id_rsa.pub .ssh/authorized_keys |
ログアウトして再度sshで接続してみてください。はじめの一回のみMacの秘密鍵にアクセスする為にパスワードを聞いてきます?(何故なんでしょう?)Macのパスワードを入力します。するとパスワード入力なしでサーバーに接続が行えるようになりました。やったね。
さて今はsshで公開鍵暗号化方式でもパスワードでもログインができる状態です。なので、公開鍵暗号化方式でしか接続できないようにパスワードログインを無効化します。ついでにsshで接続する際に通常使用するポート「22」を他のポートに変更します。
サーバーに接続している状態で「vi /etc/ssh/sshd_config」と入力します。これはviというエディタで/etc/ssh/sshd_configというファイルを開くという意味です。
1 | vi /etc/ssh/sshd_config |
開かれたsshd_configの中に「Port 22」「PermitRootLogin yes」という箇所があるので、下記の様に変更します。
ポート番号は一般的に使われていないポートを使用した方が良いです。ネットなどでポート一覧などで検索して調べてみてください。今回は「40022」を設定します。
行頭の「#」は消してください。ちなみにviでは入力する箇所で「i」キーを押下すると入力モードになります。変更したら「esc」を押下してコマンドモードに戻り「:wq」と入力して上書きして終了します。
1 2 | Port 40022 # ←ここは任意のポート番号に変更してください。 PermitRootLogin without-password |
sshのサービスを再起動します。「/etc/rc.d/init.d/sshd reload」と入力すると「〜[OK]」と表示されれば正常に再起動されました。一度サーバーからログアウトします。
1 2 | /etc/rc.d/init.d/sshd reload Reloading sshd: [ OK ] |
いつも通りsshで接続を試みると、 接続できない旨のメッセージが表示されます。
1 2 | ssh root@xxx.xxx.xxx.xxx ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused |
今度はポート番号を指定して接続してみます。「ssh root@【サーバーのIPアドレス】 -p 【ポート番号】」と入力してEnterを押下するとサーバーに接続ができます。
1 | ssh root@59.106.173.175 -p 40022 |
本当はrootユーザーではなくて一般ユーザーを作ってrootでのsshログインを停止した方がよりセキュリティは高いんでしょうけど、一般ユーザーだと色々と権限周りで上手く行かなかったので今回はrootで。。。
この辺のサーバー設定で体系的にまとまった本とかあったら教えてください。
続きはまた今度。
コメント欄で一般ユーザーを作ってログインした方がより安全と聞いたのでその方法を書いておく。
まずはサーバーにログインした状態で一般ユーザーを作成する。そして、そのユーザーにパスワードを設定する。
1 2 | useradd 【ユーザー名】 passwd 【ユーザー名】 |
次に一般ユーザーにrootと同様の権限を付与する。コマンドで下記の様に入力する。
1 | visudo |
sudoersファイルの編集が可能なので、root〜の下に追加した一般ユーザーを記述する。
1 2 | root ALL=(ALL) ALL 【ユーザー名】 ALL=(ALL) ALL |
あとは、上記のrootユーザーと同様に一般ユーザーもsshの公開鍵方式で接続出来るように設定します。
この場合にはrootユーザーによるssh接続を完全に拒否しても問題なくなるので「/etc/ssh/sshd_config」をその様に変更します。
1 | PermitRootLogin no |
これで新規に追加した一般ユーザーがssh公開鍵方式でしか接続できなくなりました。
権限が必要な処理を行うときはsudo〜でroot権限の処理が行えるようになります。
ついでに毎回「ssh 【ユーザ名】@【ホスト名】 -p 4022」とか打つのは面倒なので「.ssh/config」を設定します。
ローカルに「.ssh/config」を作成して下記の様に設定します。
1 2 3 4 | Host 【好きな名前】 User 【ユーザー名】 HostName 【ホスト名】 Port 40022 |
これで下記のように打てば該当のサーバーに接続出来るようになります。
1 | ssh 【好きな名前】 |
ホーム > サーバー
- 検索
- フィード
- メタ情報




