lsshを使って鍵に応じてアクセス可能なサーバを切り替えさせる簡易的なsshの踏み台を構築する

この間、lsshというsshのラッパーコマンドをGolangで書いてみたのだが、なんか他に使い道ないかなと考えてみた。
このコマンド、”リストから接続先を選択する”という作りなので、コマンド実行さえさせてしまえばあとは接続先を指定してsshへのログインを自動で行える。なので、「/etc/passwd」とか秘密鍵の実行コマンドに指定することで、(接続先のカギやパスワードをクライアントに渡すことなく)ssh接続だけを行う踏み台サーバにできるというのがあったので、他にネタがなかったのでせっかくなので、実際に鍵ファイルに応じてアクセス可能なサーバを変更するように設定してみることにした。なお、実行バイナリは「/usr/local/bin/」配下に配置している。

とりあえずコンパイルしたバイナリを「/usr/local/bin/」に配置して、使える状態にする。
で、各鍵で使用するtomlファイルを作成する。

●test-a.toml

[log]
enable = true
dirpath = "/path/to/logdirA"
[server.ServerA1]
addr = "192.168.100.101"
port = "22"
user = "test"
pass = "Password"
note = "Password Auth Server"
[server.ServerA2]
addr = "192.168.100.102"
port = "22"
user = "test"
key  = "/path/to/private_key"
note = "Key Auth Server"

 

●test-b.toml

[log]
enable = true
dirpath = "/path/to/logdirB"
[server.ServerB1]
addr = "192.168.100.111"
port = "22"
user = "test"
pass = "Password"
note = "Password Auth Server"
[server.ServerB2]
addr = "192.168.100.112"
port = "22"
user = "test"
key  = "/path/to/private_key"
note = "Key Auth Server"
Sponsored Links

で、後は公開鍵が登録されている「~/.ssh/authorized_keys」で、以下のように各公開鍵に応じて読み込むtomlファイルを指定してやればよい。

command="/usr/local/bin/lssh -f /home/lssh/test-a.toml" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD0MR240HV9vEYynEmnLyc1+ZgeV/o+tdN6OYa0fn91fEI2vsbkaN4yuWTVMUp5Dz5stzc9MdE58O5X368Se0JPAl9qQoo++i79mRF2FzdeMTAlXy1juPj1MKNhZu3/0FJkFJ9sRlDpzNM4m3ZNALWCO+sXwlyUejZbn0ReOxcErCmwPpSXg9IHkgIeIN/4KtiHdhCRw7ZALPj+O31iN+xcCSMu/HjMgO7UITvgVY1oN1ok0qHbKUd6vUQLnHdY15okwOjg1YczBBHsudGptQPW9fRDsFJB1980heVRtlxftrzP/Ema1PR64A/V7bA6cr2KsAgANBwBigi17d0/B90l blacknon@BS-PUB-DEVELOP
command="/usr/local/bin/lssh -f /home/lssh/test-b.toml" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzn+uOZw5G/39xfRLF6iANrdLb8w3Bkhlaocy/GsYPUG5wV1P9gGM5xvMy99rJMBdoj1pNZWzI3fdhANANanoD50Xtew+P5AOhKh99S/3LNZCjfvpZKBMz2qMM77FCVyter8We0D49IhIYUnE2q4MXtn42HWgb0zlixQgSCGiuS8DfHM4vAUGKvkeO2TkHncGtiJ4nPwVHpHrPMnZ2t0xcTeRrQHPxK03M62H8Cq9NOAHm5b7X3nDyIzl+EWBa249dxMFlAa8STz+9g3gtoUXES2Ujmv3LoTuhuvKbrxGy+796Cbeb+1f1bqMdb1Ng1HCOiISSv5fUIW+obFl3HoHF blacknon@BS-PUB-UBUNTU-01

 

これで、鍵に応じて選択できる(ログインできる)サーバを制限できる。

 

踏み台として使用しているサーバには対象の鍵ではアクセス出来ないので、管理者が管理しないといけないんだけど、まぁ簡易的な踏み台としては使えないことはないか。
RDPやVNCも含みで一括管理させたいならApache Guacamole使えばいいし。

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*