わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

macからさくらのVPSにつなぎにいく

追記(2015-11-07)

ここにある方法はもう古くて使えないと思っていい。
一応monoもXQuartzもプロジェクトとしては存在するし、El Capitan用のバージョンも用意されてるが、ここにある方法で私は現時点で動作確認が取れていない。


今日はmacからさくらのVPSにつなげるように設定を行った。
そのための手順を以下に書く。

macでKeePassを使えるようにする

KeePassというのはパスワード管理ソフトで、私は色んなサイトや権限のためのパスワードを管理するのにwindowsではこのソフトを使っていた。でもwindowsmacで管理を分けると、あちこちにパスワードが散らばって詰みそうだったので、macでも使えるようにしようと思った。

そこでwindowsのexeをmacでも使えるようにするmonoというソフトをmacに導入した。*1ちなみにmacだけのためのソフトではないので、linux系なら割となんでも来いなのでは?(やってないからわからんが)
Xamarinという会社が作っているソフトで、経緯はwikipediaをググれって話なんだけども
14日目: はてなエンジニアブロガー祭り行ってきた - わすれっぽいきみえ
で、会場を貸してくださっていたmicrosoftの方がXamarinのこと(この場合はソフト)を紹介していて、なんかC#すごーいって思った記憶がうっすらある。

とりあえずmonoのMREのパッケージをダウンロードし、展開・おk連打で入る。

f:id:kimikimi714:20140308175731p:plain

これとXQuartzのダウンロード・インストール。

f:id:kimikimi714:20140308175745p:plain

これでwindows exeの実行環境が簡単に入る。

記事自体は古いが

にある方法でKeePassの立ち上げを行うために、KeePassのダウンロードページからPortable版を落としてくる。

f:id:kimikimi714:20140308175809p:plain

このzipを解凍して、中のexeファイルをmonoで読み出す。そのために次のコマンドをたたく。

$ mono /downloaded/path/KeePass.exe

これでKeePassが立ち上がるようになった。
ファイル自体はdropboxに入れてあって、それをKeePassに読ませればwindowsで使ってたパスワードがmacでも読めるようになる。*2

さくらにsshでつなげるようにする

設定についてはさくらのVPS設定でいつもお世話になっている

がとても詳しい。久しくVPSを開いてなかったので、もうさくらのコンパネを開きOSの再インストールを実行した。
なくなって困るものを入れてなかったし。

OSを再インストールした直後だとrootで普通にログインできてしまうので、さっさとポートとかもろもろ塞ぐ。

まずはユーザの作成

$ ssh root@XXX.XXX.XXX.XXX -p 22
Last login: Sat Mar  8 16:37:57 2014 from my_home

SAKURA Internet [Virtual Private Server SERVICE]

[root@foo ~]# yum update
[root@foo ~]# useradd kimikimi714
[root@foo ~]# passwd kimikimi714
Changing password for user kimikimi714.
New password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
[root@foo ~]# su - kimikimi714
[kimikimi714@foo ~]$ exit
logout
[root@foo ~]# exit
logout
Connection to foo closed.

この状態だと秘密鍵がなくてもユーザのパスワードだけでログインできてしまう。

公開鍵・秘密鍵の作成と登録

$ ssh-keygen -t rsa -C "kimikimi714@example.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/kimikimi714/.ssh/id_rsa): [Press enter]
    (いろいろおkしまくって鍵作る)
$ scp -P 22 ~/.ssh/id_rsa.pub kimikimi714@XXX.XXX.XXX.XXX:/home/kimikimi714/.
id_rsa.pub                             100%  403     0.4KB/s   00:00
$ ssh -p 22 kimikimi714@XXX.XXX.XXX.XXX
Last login: Sat Mar  8 18:15:30 2014 from my_home

SAKURA Internet [Virtual Private Server SERVICE]

[kimikimi714@foo ~]$ mkdir .ssh
[kimikimi714@foo ~]$ chmod 700 .ssh
[kimikimi714@foo ~]$ chmod 600 id_rsa.pub
[kimikimi714@foo ~]$ mv id_rsa.pub .ssh/authorized_keys
[kimikimi714@foo ~]$ su -
password:

# vi /etc/ssh/sshd_config

#PermitRootLogin yes
PermitRootLogin no
... 中略 ....
#PasswordAuthentication yes
PasswordAuthentication no
[root@foo ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@foo ~]# exit
logout
[kimikimi714@foo ~]$ exit
logout
Connection to foo closed.
$ ssh root@XXX.XXX.XXX.XXX -p 22
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
$ ssh kimikimi714@XXX.XXX.XXX.XXX -p 22
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
$ ssh kimikimi714@XXX.XXX.XXX.XXX -p 22 -i ~/.ssh/id_rsa
Last login: Sat Mar  8 18:18:18 2014 from my_home

SAKURA Internet [Virtual Private Server SERVICE]

[kimikimi714@foo ~]$

うん。これでrootログイン不可と鍵認証ができた。次はsudoやな

sudo使えるようにする

[kimikimi714@foo ~]$ yum list installed | grep sudo
sudo.x86_64             1.7.4p5-7.el6   @anaconda-CentOS-201112091719.x86_64/6.2

既に使えるようなので、sudoersの設定だけでよさげ。ここでグループへの追加にはusermodではなくgpasswdを使う。(参考: usermod -G でユーザに新しいサブグループを追加してはいけない - 続・夕陽のプログラマ

[root@foo ~]# gpasswd -a kimikimi714 wheel
Adding user kimikimi714 to group wheel
[root@foo ~]# id kimikimi714
uid=500(kimikimi714) gid=500(kimikimi714) groups=500(kimikimi714),10(wheel)

# visudo

## Allows people in group wheel to run all commands
#  %wheel        ALL=(ALL)       ALL
%wheel        ALL=(ALL)       ALL

これでsudo使えるぜ!と息巻いて実行してみたら…

[kimikimi714@foo ~]$ sudo -v
ユーザー kimikimi714 は foo 上で sudo を実行できません。すみません。

ファッ!?
すみませんて、いやこちらこそですよw

[kimikimi714@foo ~]$ id
uid=500(kimikimi714) gid=500(kimikimi714) 所属グループ=500(kimikimi714)
[kimikimi714@foo ~]$ id kimikimi714
uid=500(kimikimi714) gid=500(kimikimi714) 所属グループ=500(kimikimi714),10(wheel)

ふむ。ログアウトするか。

[kimikimi714@foo ~]$ exit
logout
Connection to foo closed.
$ ssh kimikimi714@XXX.XXX.XXX.XXX -p 22 -i ~/.ssh/id_rsa
Last login: Sat Mar  8 18:18:18 2014 from my_home

SAKURA Internet [Virtual Private Server SERVICE]

[kimikimi714@foo ~]$ id
uid=500(kimikimi714) gid=500(kimikimi714) 所属グループ=500(kimikimi714),10(wheel)
[kimikimi714@foo ~]$ sudo -v
[sudo] password for kimikimi714:
[kimikimi714@foo ~]$

いけた。

ポート変更とssh_configの設定

sudo vi /etc/ssh/sshd_configでポート番号を適当な値に変更

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.

#Port 22
Port XXXXX

sshdを再起動して、ちゃんとポートが変更されているか試す

[kimikimi714@foo ~]$ exit
logout
Connection to foo closed.
$ ssh kimikimi714@XXX.XXX.XXX.XXX -p XXXXX -i ~/.ssh/id_rsa
Last login: Sat Mar  8 18:18:18 2014 from my_home

SAKURA Internet [Virtual Private Server SERVICE]

[kimikimi714@foo ~]$

よしよし。次はいっつもhost名とか入れんのタルいんで.ssh/configの編集

Host sakura
    HostName foo
    Port XXXXX
    IdentityFile ~/.ssh/id_rsa
$ ssh sakura
Last login: Sat Mar  8 18:18:18 2014 from my_home

SAKURA Internet [Virtual Private Server SERVICE]

[kimikimi714@foo ~]$

Yeah!

その他: userを消したいとき

タイポしたユーザ名でユーザ作っちゃったので、消さなきゃいけないときがあった。
そういうときは以下のようにする。

$ userdel -r kimikimu714
$ cat /etc/passwd | grep kimikimu714
$ cat /etc/shadow | grep kimikimu714
$ cat /etc/group | grep kimikimu714
$ ls -la /home/ | grep kimikimu714
$ ls -la /var/spool/mail | grep kimikimu714

オプション-rの意味はユーザディレクトリおよびユーザのメールスプールも削除する、の意味。
rm -rfみたいなものだと思えばおk。(参考: Linux ユーザーアカウントの削除 - userdel
userdel以下のコマンドは本当にユーザが消されたかどうかを確認するため実行した。

今日はここまで。

*1:ちゃんとした原理まで調べてないけど、たぶん仮想的にexeを立ち上げられる環境を用意してくれるんだと思う

*2:dropboxに鍵入れとくの本当はまずいのわかってるんだけど、便利だとやっちゃうなー