SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
ssh_configのススメ
Hisaharu Ishii
皆さん
ssh使ってますか?
ssh_config使ってますか?
ssh_config(5)
sshコマンドは、以下の優先順位で設定を読む
1. コマンドラインオプション
2. ユーザ設定ファイル (~/.ssh/config)
3. システム設定ファイル (/etc/ssh/ssh_config)
※ OpenSSH client を前提にしています。
Windowsな人は、TeraTermやPuTTYでなく
Cygwin版であれば同じことができます。
つまり?
つまり
$ 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
こうしておくと
こうなる
$ 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
さらに
ssh_config初級編
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_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アドレス
認証用の秘密鍵ファイル
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
同じIPアドレスでVMを何回も作成してい
ると、ホストキーが変わって警告が
邪魔なので、強制的に無視する
全てのホストに適用
同じサーバに複数のSSHセッションを開
く場合に、TCP接続を共有する
2本目以降のセッションは一瞬で開く
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
手元のマシン
社内ネットワーク
インターネット
TCP:22
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
手元のマシン
HTTP Proxy
社内ネットワーク
インターネット
TCP:22
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
社内ネットワーク
インターネット
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
uraguchi
TCP:22
ssh_config中級編
Host fuga.example.com
ProxyCommand ssh -W %h:%p uraguchi
fuga.example.com
手元のマシン
インターネット
社内ネットワーク
TCP:22
uraguchi
TCP:22
接続できない
ssh_config中級編
Host fuga.example.com
ProxyCommand ssh -W %h:%p uraguchi
fuga.example.com
手元のマシン
インターネット
社内ネットワーク
TCP:22
uraguchi
TCP:22
接続できない接続できる
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接続を
標準入出力にリレー
ssh_config上級編
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
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
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
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
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上級編
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行設定するだけ!
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
ありがとうございました

Más contenido relacionado

La actualidad más candente

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)Mr. Vengineer
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較beyond Co., Ltd.
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話y-uti
 
サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」VirtualTech Japan Inc.
 
Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料一路 川染
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Etsuji Nakai
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析Mr. Vengineer
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...ksk_ha
 
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)Kuniyasu Suzaki
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク7shi
 

La actualidad más candente (20)

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
 
サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」
 
sshdのお話
sshdのお話sshdのお話
sshdのお話
 
Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
 
入門 シェル実装
入門 シェル実装入門 シェル実装
入門 シェル実装
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
 
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 

Similar a ssh_configのススメ

Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックEmma Haruka Iwao
 
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話Takashi Uemura
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料Yasutaka Hamada
 
はじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvpsはじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvpsAtsuhiro Takiguchi
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramikoOpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko(^-^) togakushi
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Kimiyuki Yamauchi
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0Satoshi Kume
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようmax747
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみたYoshinori Teraoka
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろkjwtnb
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistranokumachang_LL
 
効率アップのためのコマンドとツール
効率アップのためのコマンドとツール効率アップのためのコマンドとツール
効率アップのためのコマンドとツールYosuke INOUE
 

Similar a ssh_configのススメ (20)

SSH Tips & Tricks
SSH Tips & TricksSSH Tips & Tricks
SSH Tips & Tricks
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
 
はじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvpsはじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvps
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramikoOpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみた
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
 
Nginx
NginxNginx
Nginx
 
Capistrano
CapistranoCapistrano
Capistrano
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
Ilstudy001_20110806
Ilstudy001_20110806Ilstudy001_20110806
Ilstudy001_20110806
 
効率アップのためのコマンドとツール
効率アップのためのコマンドとツール効率アップのためのコマンドとツール
効率アップのためのコマンドとツール
 

ssh_configのススメ