ターミナルは使えないけど root 権限でコマンドは打てる鯖でユーザ追加して ssh でログインして sudo できるようになるまで

シェアする

ある VPS の管理を任されたのだがユーザ名やパスワードはおろかポート番号すらわからなくて ssh での接続ができないでいた。前任者とは連絡が取れないらしい。なんでや。

一応、VPS の管理画面に root 権限でコマンドを実行できるページがあるのだが、ただコマンドを実行するのみで vim などのエディタはおろかコマンド実行中に何か入力を求めるもの(passwd とか yum install で y 押すところとか)は最後まで行えない。

どうにかして普通にサーバを管理したいので以下のようにしてユーザでログインして sudo できるまでになった。

Sponsored Links

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とかならまともなコンソールが管理画面から使えて良いんですけどね・・・

Sponsored Link

シェアする

フォローする