らくがきちょう

なんとなく

nologin シェルのユーザでも SSH の ProxyCommand は出来る

nologin シェルを指定されたユーザでは(当然ですが)SSH ログイン出来ません。しかし、SSH の ProxyCommand で踏み台にすることは出来るようです。

検証構成

以下の構成で動作検証してみます。OS は CentOS7 を使いました。

f:id:sig9:20161103225910p:plain

ユーザの定義

踏み台(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:~$