それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

sshで踏み台(ゲートウェイ)経由での接続のショートカットを作る

SSHのconfig で踏み台ショートカットをつくる

  • ssh を経由して sshする
  • ssh 経由して docker exec する
  • ssh経由して lxc shell する
  • ssh 経由して virsh consoleする

リモートの仮想マシンやdocker や lxc までなんでも簡単に ssh できちゃいます。

SSHの踏み台経由でsshする

SSHで、ゲートウェイSSHログインしてから、内部のPCにログインする。

書き方

ssh -t 踏み台サーバー " ssh アクセス先サーバー"

ssh -t gw.example.com "ssh 192.168.2.100 "

ssh -t-tssh -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'

結構なんでもできるよ。

関連資料