Your SlideShare is downloading. ×
SSHの便利な使い方〜マイナーな小技編〜
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

SSHの便利な使い方〜マイナーな小技編〜

570
views

Published on

SSHの少しマイナーだけど便利な設定についてのスライドです。 …

SSHの少しマイナーだけど便利な設定についてのスライドです。

内容は多段SSH(ProxyCommand), scpの補完を高速化する方法(ControlMaster), VPN over SSH(Tunnel) についてです。

以前某所でLTしたときのスライドを焼き直したものです。

Published in: Software

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
570
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SSHの便利な使い方 〜マイナーな小技編〜 @ktateish 2012/07/25
  • 2. 自己紹介 ● なまえ: @ktateish ● すきなもの: OS, ネットワーク、etc... 最近はCommonLispを勉強中 ● しゅみ: マンガ、ゲーム、水泳 よろしくおねがいします
  • 3. 発表概要 ● SSHの便利な使い方 ● sshを使っていて、こんなことないですか? ● 踏み台サーバ経由でログインするときsshを2回打つの がダルい ● scp叩くときにリモートのファイル名を補完したい ● 複数ポートをフォワードするのが面倒なのでいっそのこ とVPNを張りたい ● このようなニッチな要望に対して、 ssh_config ($HOME/.ssh/config)の記述等で解決する方法を示 すのが、この発表の趣旨です。
  • 4. 注意 このスライドには、会社等のセキュリティポリ シーが厳格なネットワークで試すには危険な設 定例が含まれています。
  • 5. ①ワンステップ多段ログイン
  • 6. NW2NW1 ①ワンステップ多段ログイン(1/3) ● 以下のような環境を想定 ● マシンが3台: client - gw - server ● gwで2つのネットワークnw1とnw2が接続 ● clientから ssh gw は可能だが、ssh server は不可 ● 普通はssh gw してgwからssh serverすればよい。 だが、面倒だ。 client gw server
  • 7. ①ワンステップ多段ログイン(2/3) ● ssh_configに ProxyCommand を記述します。 ● ➔ ➔ client で ssh server と打つだけで、serverへのログイ ンが可能に。(必要に応じて鍵登録は行う) GSS... はログイン時に異常に待たされる事象対策 ● 何が嬉しいの? ● 面倒くさくない。scp で中間ファイル不要等。 Host server ProxyCommand ssh gw nc server 22 GSSAPIAuthentication no NW2NW1 client gw server
  • 8. NW2NW1 NW3 NW4 ①ワンステップ多段ログイン(3/3) ● 応用編 ➔ ➔ “%h”, “%p” でホスト名とポート番号を一般化 ➔ Hostに複数ホスト複数ホストを記述可能 ➔ ➔ ➔ 好きなだけ多段化可能(↑clientでssh server3が可) Host server1 server2 *.example.jp ProxyCommand ssh gw nc %h %p Host gw2 ProxyCommand ssh gw nc %h %p Host gw3 ProxyCommand ssh gw2 nc %h %p Host server3 ProxyCommand ssh gw3 nc %h %p client gw server3gw2 gw3
  • 9. ②scpファイル名補完高速化
  • 10. ②scpファイル名補完高速化(1/2) ● zshやbash_completionを使うとscpコマンドでリ モートホストのファイル名補完が可能になります が、動作が非常に遅い(耐えられないほど)。 ● scp server:/home/[TAB] ↑このあと1、2秒ぐらい待たされるのが普通 ● 無理に補完しなくとも、別sshでログインし、ls等で 補完しつつ表示してマウスクリックでコピペすれ ばよい だが、面倒だ。
  • 11. ②scpファイル名補完高速化(2/2) ● ssh_configに以下を記述をするとローカルファイル補完と 遜色ないレスポンスで補完できるようになります。 ● scpの前に一度sshログインしておく必要あり ● 本来はコネクション共有のための設定 ● 重いTCPセットアップ・認証処理が不要になるの で、副次的にscp補完が超高レスポンスに ● 若干セキュリティ上のリスクがあるので注意 (ControlPathを読み書きできる人は誰でも既存 のコネクションを利用可能) Host * ControlMaster auto ControlPath ~/.ssh/.sock-%l-%r@%h:%p ControlPersist yes
  • 12. ③VPN over SSH using tun device
  • 13. ③VPN over ssh(1/5) ● SSHは -L や -R で様々なTCPセッションを転送 できるのは有名です ● → 本来できないはずの逆向きのsshを可能にしたり ● → まるでjnspcからのSMTP接続かのように見せかけたり ● etc... ● 転送したい接続の種類だけ ssh -L, ssh -R すれ ば、あらゆるTCPセッションの転送が可能。 user@knzpc% ssh -L 10025:smtp.srv.cc.example.jp:25 jnspc user@jnspc% ssh -R 10022:localhost:22 knzpc
  • 14. ③VPN over ssh(2/5) だが、面倒だ。 → VPNを張ってしまえ
  • 15. ● 以下のような環境を想定 ● client – server 間をL2-VPNでつなぐ ● client, server は Fedora (RH系) を想定 ● VPNのNWは192.168.1.0/24とする ③VPN over ssh(3/5) NW2NW1 client gw server br9: 192.168.1.1 tap9 tap9 br9: 192.168.1.2 SSH Tunnel
  • 16. ③VPN over ssh(4/5) ● clientの設定 ● root の ssh_config ● ifcfg-br9 ・ ifcfg-tap9 Host * ControlMaster auto ControlPath ~/.ssh/.sock-%l-%r@%h:%p ControlPersist yes Host server-tun ← 普通の接続と区別のため「server-tun」に HostName server ← 本当のホスト名を指定 ProxyCommand ssh gw nc %h %p Tunnel ethernet ← トンネル設定(L2 VPN) TunnelDevice 9:9 ← 両者のデバイス番号を9に固定 LocalCommand ifup tap9 ← VPN接続後トンネルデバイスを有効化 DEVICE=br9 ONBOOT=yes TYPE=Bridge IPADDR=192.168.1.1 NETMASK=255.255.255.0 DEVICE=tap9 ONBOOT=no BRIDGE=br9 clientclient
  • 17. ③VPN over ssh(5/5) ● serverの設定 ● sshd_config(抜粋) ● ifcfg-br9 ・ ifcfg-tap9 ● 接続実行 ね、簡単でしょう? PermitTunnel yes DEVICE=br9 ONBOOT=yes TYPE=Bridge IPADDR=192.168.1.1 NETMASK=255.255.255.0 DEVICE=tap9 ONBOOT=no BRIDGE=br9 serverserver root@client# ssh server-tun ifup tap9
  • 18. まとめ ● ProxyCommandで多段ログインを1回のsshに まとめられる ● ControlMaster で scp のリモートファイル補 完が実用レベルになる ● Tunnel で VPN over SSH もさっくり可能
  • 19. 参考文献 ● ssh(1) ● ssh_config(5) ● sshd_config(5)
  • 20. おわり ご清聴ありがとうございました

×