ある VPS の管理を任されたのだがユーザ名やパスワードはおろかポート番号すらわからなくて ssh での接続ができないでいた。前任者とは連絡が取れないらしい。なんでや。
一応、VPS の管理画面に root 権限でコマンドを実行できるページがあるのだが、ただコマンドを実行するのみで vim などのエディタはおろかコマンド実行中に何か入力を求めるもの(passwd とか yum install で y 押すところとか)は最後まで行えない。
どうにかして普通にサーバを管理したいので以下のようにしてユーザでログインして sudo できるまでになった。
ssh で使用しているポート番号の特定
sshd_config を見るとポート番号がわかる。ついでにルートでログインできるか、鍵無しでログインできるかも確認できる。
# cat /etc/ssh/sshd_config
Port 10022
PasswordAuthentication yes
ポート番号は 10022 でパスワードによる認証を有効にしているようだ。変更したいが vim も使えない状態で変更するのはだるい、後回しだ。
useradd コマンドでユーザの追加とパスワードの指定を同時に行う
ls /home を実行してみるとユーザが一つあるようだがパスワードもわからないし新しく追加しよう。
ユーザを追加するには useradd コマンドを使用するのだが、passwd コマンドでパスワードを設定できないので useradd コマンド実行時に同時にパスワードも指定しないといけない。
useradd でパスワードを指定する再には暗号化したものを渡さないといけないので、perl のワンライナーと合わせて以下のように実行しようとした。
# useradd -p `perl -e "print(crypt('password', 'pa'));"` example
crypt の第一引数がパスワード、第二引数が salt で英数字、ドット、スラッシュを使用した二文字を指定する。
が、VPS のコマンド実行欄に " を入力すると勝手に別の文字(全角?)へ変換してコマンドが通らない。糞か。なので一度 perl のワンライナーを他のサーバで実行し、その結果をコピペして useradd コマンドを実行した。
$ # 他のサーバで以下を実行
$ perl -e "print(crypt('password', 'pa'));"
papAq5PwY/QQM%
# VPSの管理画面に戻り以下を実行
# useradd -p papAq5PwY/QQM% example
これでユーザが作成された。パスワードもあるので ssh でログインできるようになった。
sudo をインストールし、作成したユーザで使えるようにする
最後に sudo を使えるようにしたい。がどうやら sudo もインストールされてないらしく、コマンドを打ってもそんなものは無いと言われるし、そもそも /etc/sudoers が存在しない。
一応 apt なり yum なりでインストールされてるか確かめたいのだが、そもそもこのサーバの OS はなんだろう。
ディストリビューションが何なのかは /etc 以下のファイルを見るとわかる。
# ls /etc | grep -release
centos-release
redhat-release
system-release
system-release-cpe
# cat /etc/centos-release
CentOS release 6.6 (Final)
なるほど CentOS らしい。なら yum が使えるだろう。
# yum list installed |grep sudo
が、何も出て来ない。無いのか。。。
yum でインストールする際、途中で y/n といったダイアログが出てくるがここは入力できないので自動で y を送信してくれる -y オプションと共に sudo をインストールしよう。
# yum install sudo -y
(中略)
Installed:
sudo.x86_64 0:1.8.6p3-20.el6_7
Complete!
これでインストールできた。
最後に /etc/sudoers を編集して先ほど作成したユーザで sudo コマンドを使えるようにしなければならない。が、ここでも visudo は使えないので /etc/sudoers を直接いじらないといけない。普通はやってはいけない、怖い。
とりあえず、以下のようにやれば sudoers にユーザを追加できる。
# echo 'example ALL=(ALL) ALL' >> /etc/sudoers
が、なんか変ミスしたらやだなーと思ったので(さっきも"が勝手に変換されたし)、一度上記で作成したユーザでログインして追記する文字列を書いたファイルを作成。
$ vi sudoers
example ALL=(ALL) ALL
その後 VPS の管理画面に戻り以下のように打ち込んだ。
# cp /etc/sudoers /etc/sudoers.bk
# cat /home/example/sudoers >> /etc/sudoers
これでユーザ example で sudo ができるようになった。やれやれ。さくらのVPSとかならまともなコンソールが管理画面から使えて良いんですけどね・・・
コメント