SSHのconfig で踏み台ショートカットをつくる
リモートの仮想マシンやdocker や lxc までなんでも簡単に ssh できちゃいます。
SSHの踏み台経由でsshする
SSHで、ゲートウェイにSSHログインしてから、内部のPCにログインする。
書き方
ssh -t 踏み台サーバー " ssh アクセス先サーバー"
例
ssh -t gw.example.com "ssh 192.168.2.100 "
ssh -t
の -t
は ssh -o 'RequestTty force'
の省略形で、tty の割当を矯正するものです。
ssh 設定にする
毎回記入するのが面倒で、ssh_config の設定にする場合はこうする。
host 好きな名前 Hostname 踏み台の先のIP ProxyCommand ssh 踏み台のIP -W %h:%p
設定例
先程の接続例
ssh -t gw.example.com "ssh 192.168.2.100 "
先程の接続例をconfig にする例
host s1-gitlab Hostname 192.168.2.100 ProxyCommand ssh gw.example.com -W %h:%p
上記 config を使う例
ssh s1-gitlab
踏み台のホスト名を「別名にする」
踏み台のIPやホスト名を書いていると、変更に弱くなる。踏み台の「名前」も設定にする。
ssh -t humidai "ssh 192.168.2.100 "
上記の設定例。
host humidai Hostname gw.example.com host s1-gitlab Hostname 192.168.2.100 ProxyCommand ssh fumidai -W %h:%p
これを応用すると、「踏み台」を「踏み台」にして多段で入れる。
踏み台経由でdocker
踏み台でdocker のコンテナに直接に入れます。
ssh 192.168.2.240 -t 'docker exec -it e339fc9cfb25 bash' ## または ssh 192.168.2.240 -o 'RequestTTY true' 'docker exec -it e339fc9cfb25 bash'
上記コマンドのssh_config 設定例。
Host sample Hostname 192.168.2.240 RequestTTY force RemoteCommand docker exec -it e339fc9cfb25 bash
踏み台経由でのLXC
LXCも同様にして、コンテナに直接入れます。
ssh lxc-host -t' lxc shell lxc-container-01' ## または ssh lxc-host -o 'RequestTty force' ' lxc shell lxc-container-01'
上記コマンドのconfig例
Host lxc-container01 Hostname lxc-host RequestTTY force RemoteCommand lxc shell lxc-container-01
踏み台経由の virt-machine
virsh でkvm+qemu の仮想マシン へ接続するのもこれでいける。
ssh 192.168.2.240 -t 'sudo virsh console 28'
virsh の場合は、sudo つけないと動かないかも。
おまけ windows標準のopenssh-server でwslを直接呼び出す。
Windowsの標準搭載のopenssh-sever だと cmd.exeになってしまうので、wsl や ps を直接呼び出す。
ssh win10pro -t 'wsl' ssh win10pro -t 'powershell'
結構なんでもできるよ。