Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ssh_configのススメ
Hisaharu Ishii
皆さん
ssh使ってますか?
ssh_config使ってますか?
ssh_config(5)
sshコマンドは、以下の優先順位で設定を読む
1. コマンドラインオプション
2. ユーザ設定ファイル (~/.ssh/config)
3. システム設定ファイル (/etc/ssh/ssh_config)
※ Op...
つまり?
つまり
$ ssh -p 2222 very-long-user-name@very-long-server-name.
example.com
これを
$ cat .ssh/config
Host very
Port 2222
User ve...
$ scp -P 2222 very-long-
user-name@very-long-
server-name.example.com:
hoge.txt ./
$ scp very:hoge.txt ./
$ rsync --port 2...
ssh_config初級編
ssh_config初級編
Host hoge
Port 2222
User taro
HostName foobar.example.com
IdentityFile ~/.ssh/id_rsa_2
Host fuga
User jiro
H...
ssh_config初級編
Host hoge
Port 2222
User taro
HostName foobar.example.com
IdentityFile ~/.ssh/id_rsa_2
Host fuga
User jiro
H...
ssh_config中級編
ssh_config中級編
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
ControlMaster auto
ControlPath /tmp/%r@%h:%p
ssh_config中級編
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
ControlMaster auto
ControlPath /tmp/%r@%h:%p
同じ...
ssh_config中級編
その2
ssh_config中級編
Host hoge.example.com
ProxyCommand connect -H proxy.mydomain.com:8080 %h %p
ssh_config中級編
Host hoge.example.com
ProxyCommand connect -H proxy.mydomain.com:8080 %h %p
hoge.example.com
手元のマシン
TCP:22
ssh_config中級編
Host hoge.example.com
ProxyCommand connect -H proxy.mydomain.com:8080 %h %p
hoge.example.com
手元のマシン
社内ネットワーク...
ssh_config中級編
Host hoge.example.com
ProxyCommand connect -H proxy.mydomain.com:8080 %h %p
hoge.example.com
手元のマシン
社内ネットワーク...
ssh_config中級編
Host hoge.example.com
ProxyCommand connect -H proxy.mydomain.com:8080 %h %p
hoge.example.com
手元のマシン
HTTP Pro...
ssh_config中級編
Host hoge.example.com
ProxyCommand connect -H proxy.mydomain.com:8080 %h %p
hoge.example.com
手元のマシン
connect ...
ssh_config中級編
その3
ssh_config中級編
Host fuga.example.com
ProxyCommand ssh -W %h:%p uraguchi
fuga.example.com
手元のマシン
TCP:22
ssh_config中級編
Host fuga.example.com
ProxyCommand ssh -W %h:%p uraguchi
fuga.example.com
手元のマシン
インターネット
社内ネットワーク
TCP:22
ura...
ssh_config中級編
Host fuga.example.com
ProxyCommand ssh -W %h:%p uraguchi
fuga.example.com
手元のマシン
インターネット
社内ネットワーク
TCP:22
ura...
ssh_config中級編
Host fuga.example.com
ProxyCommand ssh -W %h:%p uraguchi
fuga.example.com
手元のマシン
インターネット
社内ネットワーク
TCP:22
ura...
ssh_config中級編
Host fuga.example.com
ProxyCommand ssh -W %h:%p uraguchi
fuga.example.com
手元のマシン
ssh client
SSHセッション
ssh cli...
ssh_config上級編
ssh_config上級編
Host host_machine,*
ProxyCommand ssh -W $(ssh host_machine virsh dumpxml
`echo %h | cut -d, -f2` | awk -F"[<...
ssh_config上級編
Host host_machine,*
ProxyCommand ssh -W $(ssh host_machine virsh dumpxml
`echo %h | cut -d, -f2` | awk -F"[<...
ssh_config上級編
Host host_machine,*
ProxyCommand ssh -W $(ssh host_machine virsh dumpxml
`echo %h | cut -d, -f2` | awk -F"[<...
ssh_config上級編
Host host_machine,*
ProxyCommand ssh -W $(ssh host_machine virsh dumpxml
`echo %h | cut -d, -f2` | awk -F"[<...
ssh_config上級編
Host host_machine,*
ProxyCommand ssh -W $(ssh host_machine virsh dumpxml
`echo %h | cut -d, -f2` | awk -F"[<...
ssh_config上級編
Host host_machine,*
ProxyCommand ssh -W $(ssh host_machine virsh dumpxml
`echo %h | cut -d, -f2` | awk -F"[<...
ssh_config上級編
Host host_machine,*
ProxyCommand ssh 
-W $( 
ssh host_machine 
virsh dumpxml `echo %h | cut -d, -f2` 
| awk ...
ありがとうございました
Upcoming SlideShare
Loading in …5
×

ssh_configのススメ

15,373 views

Published on

第18回シェル芸勉強会のLTで使ったスライド
https://usptomo.doorkeeper.jp/events/28602

Published in: Software
  • Login to see the comments

ssh_configのススメ

  1. 1. ssh_configのススメ Hisaharu Ishii
  2. 2. 皆さん
  3. 3. ssh使ってますか?
  4. 4. ssh_config使ってますか?
  5. 5. ssh_config(5) sshコマンドは、以下の優先順位で設定を読む 1. コマンドラインオプション 2. ユーザ設定ファイル (~/.ssh/config) 3. システム設定ファイル (/etc/ssh/ssh_config) ※ OpenSSH client を前提にしています。 Windowsな人は、TeraTermやPuTTYでなく Cygwin版であれば同じことができます。
  6. 6. つまり?
  7. 7. つまり $ ssh -p 2222 very-long-user-name@very-long-server-name. example.com これを $ cat .ssh/config Host very Port 2222 User very-long-user-name HostName very-long-server-name.example.com $ ssh very こうしておくと こうなる
  8. 8. $ scp -P 2222 very-long- user-name@very-long- server-name.example.com: hoge.txt ./ $ scp very:hoge.txt ./ $ rsync --port 2222 very- long-user-name@very-long- server-name.example.com: hoge.txt ./ $ rsync very:hoge.txt ./ $ git clone ssh: //very/hoge.git $ git clone ssh://very- long-user-name@very-long- server-name.example.com: 2222/hoge.git さらに
  9. 9. ssh_config初級編
  10. 10. ssh_config初級編 Host hoge Port 2222 User taro HostName foobar.example.com IdentityFile ~/.ssh/id_rsa_2 Host fuga User jiro HostName fuga.example.com
  11. 11. ssh_config初級編 Host hoge Port 2222 User taro HostName foobar.example.com IdentityFile ~/.ssh/id_rsa_2 Host fuga User jiro HostName fuga.example.com 設定が適用されるホスト名 SSHサーバのポート番号(標準は22) ログインユーザ名 実際に接続するホスト名orIPアドレス 認証用の秘密鍵ファイル
  12. 12. ssh_config中級編
  13. 13. ssh_config中級編 Host * StrictHostKeyChecking no UserKnownHostsFile /dev/null ControlMaster auto ControlPath /tmp/%r@%h:%p
  14. 14. ssh_config中級編 Host * StrictHostKeyChecking no UserKnownHostsFile /dev/null ControlMaster auto ControlPath /tmp/%r@%h:%p 同じIPアドレスでVMを何回も作成してい ると、ホストキーが変わって警告が 邪魔なので、強制的に無視する 全てのホストに適用 同じサーバに複数のSSHセッションを開 く場合に、TCP接続を共有する 2本目以降のセッションは一瞬で開く
  15. 15. ssh_config中級編 その2
  16. 16. ssh_config中級編 Host hoge.example.com ProxyCommand connect -H proxy.mydomain.com:8080 %h %p
  17. 17. ssh_config中級編 Host hoge.example.com ProxyCommand connect -H proxy.mydomain.com:8080 %h %p hoge.example.com 手元のマシン TCP:22
  18. 18. ssh_config中級編 Host hoge.example.com ProxyCommand connect -H proxy.mydomain.com:8080 %h %p hoge.example.com 手元のマシン 社内ネットワーク インターネット TCP:22
  19. 19. ssh_config中級編 Host hoge.example.com ProxyCommand connect -H proxy.mydomain.com:8080 %h %p hoge.example.com 手元のマシン 社内ネットワーク インターネット 直接通信できない TCP:22
  20. 20. ssh_config中級編 Host hoge.example.com ProxyCommand connect -H proxy.mydomain.com:8080 %h %p hoge.example.com 手元のマシン HTTP Proxy 社内ネットワーク インターネット TCP:22
  21. 21. ssh_config中級編 Host hoge.example.com ProxyCommand connect -H proxy.mydomain.com:8080 %h %p hoge.example.com 手元のマシン connect proxy HTTP Proxy HTTP CONNECT リクエスト TCP接続を リレー TCP:8080 TCP:22 ssh client 社内ネットワーク インターネット
  22. 22. ssh_config中級編 その3
  23. 23. ssh_config中級編 Host fuga.example.com ProxyCommand ssh -W %h:%p uraguchi fuga.example.com 手元のマシン TCP:22
  24. 24. ssh_config中級編 Host fuga.example.com ProxyCommand ssh -W %h:%p uraguchi fuga.example.com 手元のマシン インターネット 社内ネットワーク TCP:22 uraguchi TCP:22
  25. 25. ssh_config中級編 Host fuga.example.com ProxyCommand ssh -W %h:%p uraguchi fuga.example.com 手元のマシン インターネット 社内ネットワーク TCP:22 uraguchi TCP:22 接続できない
  26. 26. ssh_config中級編 Host fuga.example.com ProxyCommand ssh -W %h:%p uraguchi fuga.example.com 手元のマシン インターネット 社内ネットワーク TCP:22 uraguchi TCP:22 接続できない接続できる
  27. 27. ssh_config中級編 Host fuga.example.com ProxyCommand ssh -W %h:%p uraguchi fuga.example.com 手元のマシン ssh client SSHセッション ssh client インターネット 社内ネットワーク TCP:22 uraguchi TCP:22 TCP接続を 標準入出力にリレー
  28. 28. ssh_config上級編
  29. 29. ssh_config上級編 Host host_machine,* ProxyCommand ssh -W $(ssh host_machine virsh dumpxml `echo %h | cut -d, -f2` | awk -F"[<']" '$2=="mac address="{print $3}' | xargs -I@ ssh host_machine grep @ /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}'):%p host_machine
  30. 30. ssh_config上級編 Host host_machine,* ProxyCommand ssh -W $(ssh host_machine virsh dumpxml `echo %h | cut -d, -f2` | awk -F"[<']" '$2=="mac address="{print $3}' | xargs -I@ ssh host_machine grep @ /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}'):%p host_machine 手元のマシン host_machine kvm, libvirt, dnsmasq
  31. 31. ssh_config上級編 Host host_machine,* ProxyCommand ssh -W $(ssh host_machine virsh dumpxml `echo %h | cut -d, -f2` | awk -F"[<']" '$2=="mac address="{print $3}' | xargs -I@ ssh host_machine grep @ /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}'):%p host_machine 手元のマシン host_machine kvm, libvirt, dnsmasq vm1 vm2
  32. 32. ssh_config上級編 Host host_machine,* ProxyCommand ssh -W $(ssh host_machine virsh dumpxml `echo %h | cut -d, -f2` | awk -F"[<']" '$2=="mac address="{print $3}' | xargs -I@ ssh host_machine grep @ /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}'):%p host_machine 手元のマシン host_machine kvm, libvirt, dnsmasq vm1 vm2 192.168.122.123 192.168.122.234
  33. 33. ssh_config上級編 Host host_machine,* ProxyCommand ssh -W $(ssh host_machine virsh dumpxml `echo %h | cut -d, -f2` | awk -F"[<']" '$2=="mac address="{print $3}' | xargs -I@ ssh host_machine grep @ /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}'):%p host_machine 手元のマシン host_machine ssh host_machine,vm1 ssh host_machine,vm2 kvm, libvirt, dnsmasq vm1 vm2 192.168.122.123 192.168.122.234
  34. 34. ssh_config上級編 Host host_machine,* ProxyCommand ssh -W $(ssh host_machine virsh dumpxml `echo %h | cut -d, -f2` | awk -F"[<']" '$2=="mac address="{print $3}' | xargs -I@ ssh host_machine grep @ /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}'):%p host_machine 手元のマシン host_machine ssh host_machine,vm1 ssh host_machine,vm2 kvm, libvirt, dnsmasq vm1 vm2 192.168.122.123 192.168.122.234 サーバ側の設定は一切不要! クライアントの.ssh/configに 2行設定するだけ!
  35. 35. ssh_config上級編 Host host_machine,* ProxyCommand ssh -W $( ssh host_machine virsh dumpxml `echo %h | cut -d, -f2` | awk -F"[<']" '$2=="mac address="{print $3}' | xargs -I@ ssh host_machine grep @ /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}' ):%p host_machine
  36. 36. ありがとうございました

×