nologin シェルを指定されたユーザでは(当然ですが)SSH ログイン出来ません。しかし、SSH の ProxyCommand で踏み台にすることは出来るようです。
検証構成
以下の構成で動作検証してみます。OS は CentOS7 を使いました。
ユーザの定義
踏み台(centos-01)やサーバ(centos-02)のユーザ定義/シェル設定は以下の通りです。
centos-01
踏み台(centos-01)には nologin-user という、nologin シェルを指定したユーザを作成しています。
# getent passwd nologin-user
nologin-user:x:1001:1001::/home/nologin-user:/sbin/nologin
centos-02
サーバ(centos-02)には user という、bash シェルを指定したユーザを指定しています。
# getent passwd user
user:x:1000:1000::/home/user:/bin/bash
クライアントの設定
クライアントの ~/.ssh/config には以下のように設定しました。centos-02 へアクセスする際は ProxyCommand 設定により、centos-01 を経由してアクセスするように設定しています。
Host centos-01
Hostname 10.101.0.11
Port 22
User nologin-user
IdentityFile ~/.ssh/id_rsa
Host centos-02
Hostname 10.101.0.12
Port 22
User user
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh -W %h:%p centos-01
nologin シェルユーザには SSH アクセス出来ない
クライアントから踏み台上に作成された nologin シェルのユーザで SSH アクセスしてもログイン出来ません。
$ ssh centos-01
Last login: Thu Nov 3 22:40:34 2016 from 10.101.0.21
This account is currently not available.
Connection to 10.101.0.11 closed.
nologin シェルユーザでも ProxyCommand は出来る
クライアントから centos-01(nologin-user)を踏み台にし、centos-02(user)へ SSH アクセスするとログイン出来ます。
$ ssh centos-02
Last login: Thu Nov 3 22:38:32 2016 from 10.101.0.11
user@centos-02:~$
コメント