
この間、lsshというsshのラッパーコマンドをGolangで書いてみたのだが、なんか他に使い道ないかなと考えてみた。
このコマンドは リストから接続先を選択する
という作りなので、コマンド実行さえさせてしまえばあとは接続先を指定してsshへのログインを自動で行える。
なので、「/etc/passwd」とか秘密鍵の実行コマンドに指定することで、(接続先のカギやパスワードをクライアントに渡すことなく)ssh接続だけを行う踏み台サーバにできるというのがあったので、 他にネタがなかったので せっかくなので実際に鍵ファイルに応じてアクセス可能なサーバを変更するように設定してみることにした。
なお、実行バイナリは「/usr/local/bin/」配下に配置している。
とりあえずコンパイルしたバイナリを「/usr/local/bin/」に配置して、使える状態にする。 各鍵で使用するtomlファイルを作成する。
test-a.toml
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
test-b.toml
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"
で、後は公開鍵が登録されている「\~/.ssh/authorized_keys」で、以下のように各公開鍵に応じて読み込むtomlファイルを指定してやればよい。
properties
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使えばいいし。