この間、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
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"
で、後は公開鍵が登録されている「\~/.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使えばいいし。