外から root での ssh を無効化しつつ VS Code Remote では root で操作する


開発用サーバーでは権限設定が面倒なので root で操作してしまうことが多いです。とはいっても流石に ssh で外からの root でのログインは無効化しておきたいですよね。今までは sudo su – で凌いできたのですが Visual Studio Code の Remote Development では sudo で権限昇格できないっぽいので他の方法を考えました。

開発用サーバーなので妥協して、外から root ログインは無効のままで、ローカルからのみは許可すればいいのではと考えました。要するに自分自身を踏み台サーバーとして一般のユーザーでログインし、そこから root でログインするという手法です。賛否はあると思いますが、開発用ということで。

~/.ssh/config はこんな感じです。

Host hostname-user
    HostName example.com
    User sshuser
    IdentityFile ~/.ssh/xxxx

Host hostname-root
    HostName localhost
    User root
    IdentityFile ~/.ssh/xxxx
    ProxyCommand ssh.exe -W %h:%p hostname-user

Windows ユーザーなので ProxyCommand は ssh.exe にしています。.exe を省略すると以下のように怒られます。(前はフルパスじゃないと動かなかったような)

CreateProcessW failed error:2
posix_spawn: No such file or directory

~は解決してくれるのに不思議ですね。もちろん Windows 以外の場合は ssh にしないと動かないです。


/etc/ssh/sshd_configには以下を追記します。

PermitRootLogin no
Match Address  127.0.0.1
    PermitRootLogin yes

Match はインデント関係なく次の Match または Host が出てくるまでを範囲とするので、ファイルの最後に書いてください。

sshd -t

上記コマンドでエラーが出なければ設定ファイルは問題ないです。

systemctl restart sshd

sshd の再起動はシステムによってコマンド異なるので、読み替えてください。上記は CentOS 7 や 8 の場合です。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください