SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
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
ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
Takuya ASADA
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
 

Was ist angesagt? (20)

OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたOPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
 
Nginx lua
Nginx luaNginx lua
Nginx lua
 
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりましたジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
Consistent hash
Consistent hashConsistent hash
Consistent hash
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜
 
Openconfigを用いたネットワーク機器操作
Openconfigを用いたネットワーク機器操作Openconfigを用いたネットワーク機器操作
Openconfigを用いたネットワーク機器操作
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 

Ähnlich wie ssh_configのススメ

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.0
Satoshi Kume
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
max747
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
kjwtnb
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
kumachang_LL
 

Ähnlich wie 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のススメ