tl;dr デプロイツールによっては 同じサーバに SSH で何回もコマンドを実行することがある(ansible とか)。 コマンドごとに毎回コネクション(トンネル)を確立するとオーバーヘッドも大きくなる。 OpenSSH は $HOME/.ssh/config に次の設定を書くことで、接続を多重化(multiplex)することができる。 # $HOME/.ssh/config Host machine1 HostName machine1.example.org ControlPath ~/.ssh/controlmasters/%r@%h:%p ControlMaster auto ControlPersist 1h multiplex 前後の速度差 SSH を使ってリモートサーバで echo コマンドを実行した時の速度差を計測 before multiplex $ time ssh
冗長化させたホストやスケールアウトさせたホストなどの同じサーバ構成をもつホストグループや、あるサービスに所属するホスト全てに同時にsshして同時に操作したいことがある。 複数のホストに同時ログインするツールとして cssh があるけど、毎回複数のホスト名をチマチマ入力したり、すぐに古くなるホスト一覧ファイルを手元に持ちたくない。Immutable Infrastructure 時代にはそぐわない。Immutable Infrastructure 時代にはホスト名なんて毎日変化するし誰も覚えてない。サーバ管理ツール上のグループ名を使ってグループ配下のホストに同時にsshしたい。 あと、cssh は個人的に挙動がなんか微妙なので、代わりに tmux と ssh を組み合わせている。 cssh はマスタとかスレーブとか気持ちはわかるけど、複数ウィンドウ操作は使い慣れたターミナルマルチプレクサを使
リモートからのgit pullなどの操作を、SSHのコネクション共有とリポジトリの自動ミラーを使って50倍高速化する方法。 注意 Gitサーバとの距離によって結果はまちまちだ。timeコマンドを使った全く科学的とは言えないベンチマークでは、以下の手順を実行した後はgit pullが、GitHubとシンガポールAWSのEC2で5秒以下から0.1秒以下になった。 なぜ? $ time git pull Already up-to-date. real 0m5.075s Gitリポジトリが最新だってことを表示するだけで5秒かかるって?あり得ない。 SSHコネクションの共有と永続化 シンガポールでは、github.comへの往復時間は250msほどだ。GitのオペレーションをするたびにSSHコネクションを張るのは、たくさんのやり取りが発生してしまう。しかし、~/.ssh/configに以下の行を書
自動バックアップ処理をさせたいが シェル権限を与えたくないときとかに使える技。 やり方は簡単で $HOME/.ssh/authorized_keys の "コマンドを制限したい公開鍵" の行の先頭に 実行させたいコマンドを記述すればよい。 そのときのフォーマットはだいたい以下のようになる。 command="実行させたいコマンド",sshのオプションをカンマ区切りで書く command=hoge というのを付け足すことによって その公開鍵でアクセスがあったときに 指定したコマンドを実行させることができる。 たとえば、uptime を実行させたいときは、 以下のようにすればよい。 command="uptime",no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa AAAABbBFERTWER....
authorized_keys ファイルについて調べてみたら楽しかった.ポートフォワード専用公開鍵とかいろいろ作れそうです authorized_keys ファイルって単に,公開鍵を入れて置く場所だと思ってました authorized_keys ファイルにはログイン時に自動実行するプログラムとか、環境変数を書いておくとか イロイロ便利な使い方があるのです. 使える設定は以下の通り ログイン時に自動適応する設定は次の通り from="pattern-list" environment="NAME=value" command="command" cert-authority tunnel="n" permitopen="host:port" no-X11-forwarding no-user-rc no-pty Prevents tty allocation (a request to al
OpenSSHには1本のコネクションで複数のSSHセッションを束ねて使える機能があります。例えば、~/.ssh/configに Host example.com ControlMaster auto ControlPath ~/.ssh/mux-%r@%h:%pと設定しておくと、最初に接続したsshセッションのコネクション(マスターコネクション)を使いまわし、複数のSSHセッションをマスターコネクションに束ねることができます*1。 主なメリットは以下のとおり。 TCPセッションは1つなのでTCPの同時接続数が制限されているサーバでも複数sshが可能*2 コネクションを使いまわした場合、接続にかかる時間が短い(ssh経由で複数回に分けてコマンド投入とかで時間短縮) コネクションを使いまわした場合、パスワード入力やパスフレーズ入力が不要*3 ですが、ControlMasterとControlP
昨日は年始の挨拶ついでに ELPA について脈絡もなく突然書きましたが、引き続き近頃の開発環境についてもだらだらと書いてみよう。 Mosh mosh というと一部の人間はひげなんとかさんが開発しているモナー的なあれを思い浮かべるかもしれないがそうではなく、mobile shell のことである。 思い切り簡略化して言うと「快適なssh」。回線が不安定な所でもエコー遅延など全く気にせず使えるし、Mac をスリープさせて復帰させたときもリモートホストにそのまま繋がりっぱなしのように見せかけてくれたりする。 詳しくはこの辺を。 mosh: MITからモバイル時代のSSH代替品 - karasuyamatenguの日記 インストールはリモートとローカル両方に必要ですが、まあ大概パッケージがあると思います。EC2 の Amazon Linux でも yum レポジトリの EPEL を有効にすれば y
拝啓 全国1億5千万の踏み台サーバ好きのみなさま 元気に踏み台サーバを踏まれているでしょうか。 社内で利用していながらよく理解していなかったので 改めてカジュアルに学び直したメモを書いておきます。 参考 sshのProxyCommandでnc使うときは-w SEC忘れないようにね! URL 2012-09-14 12:46:02 via atig.rb クラアント -> 踏み台サーバ -> 対象サーバという時に、毎回踏み台サーバに入って、対象サーバに入るのは面倒くさいので 「~/.ssh/config」へ Host fumidai Hostname 203.0.113.1 User kenjiskywalker Host hoge-web01 Hostname 203.0.113.101 User kenjiskywalker ProxyCommand ssh fumidai nc -w
(mobile shell) Remote terminal application that allows roaming, supports intermittent connectivity, and provides intelligent local echo and line editing of user keystrokes. Mosh is a replacement for interactive SSH terminals. It's more robust and responsive, especially over Wi-Fi, cellular, and long-distance links. Mosh is free software, available for GNU/Linux, BSD, macOS, Solaris, Android, Chrom
http://mosh.mit.edu/ ローミング可能 断続的な接続でも平気 ローカルエコーで快適なレスポンス などの機能をそなえたSSH代替ターミナルソフト。その名も「モッシュ」 iPhone/iPadでウロウロしながらサーバ作業をするのを想定しているようだ。ドキュメントやパッケージの充実度からしてもかなり高質のプロジェクト。こいつら本気でSSHを越えようとしている。 こんな能書き IPが変っても大丈夫 スリープ後もターミナルが生きている 遅いリンクでもローカルエコーにより快適 要は素早く打ち込んでいるときにスクリーンが止っちゃうことがない フルスクリーンモードでも有効 サーバ側と同期化されていない入力はアンダーラインで記される ルート権限がなくてもサーバのインストール可能 サーバは一般プログラムとしてインストールして、それをSSHで立ち上げる SSHをinetdとして使っている感じだ
完全なまとめがみつからなかったので、まとめておく。ControlMaster を使います。 REMHOST=localhost ssh -S ~/.ssh/master-$$ $REMHOST -M -f -N 2>/dev/null 1>&2 ssh -S ~/.ssh/master-$$ $REMHOST hostname ssh -S ~/.ssh/master-$$ $REMHOST uname ssh -S ~/.ssh/master-$$ $REMHOST who ssh -S ~/.ssh/master-$$ $REMHOST -O exit 1>/dev/null 2>/dev/null こんな感じで書けます。最初のsshコマンドで接続を作って、最後ので破棄しています。 scpの呼び出しも、 scp -o ControlPath=~/.ssh/master-$$ file
開発の作業をしているときは、複数のホストのサーバーを行き来していろいろとオペレーションをするようなことがあると思います。 そんなときに1つのサーバーから作業できるよう、ssh経由でリモートのサーバーをマウントし、Localのファイルシステムのように見せることができるsshfsを紹介したいと思います。 sshfsのインストール Debian/Ubuntuならaptで簡単インストールできます。なお、fuseグループに入っている必要があるので、その設定まで実施します。なお、ユーザー名はwadapで実施します。 $ sudo apt-get install sshfs $ sudo adduser fuse wadap $ newgrp fuse以上、簡単ですね。 早速リモートホストをマウント リモートホストをマウントするのは簡単です。マウントポイントをつくって、sshfsコマンドを実行するだけ。
pssh pssh(Parallel ssh)とは、複数のホストに対して同じ処理が実行できる並行処理型のSSHツールです。psshには平行処理形で複数のホストにscp、rsyncが実行出来るpscp、prsync、複数のホストから一斉にファイルを収集するpslurpが含まれています。 使い方がシンプルなので複数のホストに同じ処理を実行したい場合に便利です。 導入環境はCentOS5.5です。 psshの導入 psshの導入にsetuptoolsが必要なのでyumで導入 sudo yum -y install python-setuptools 最新版のpsshを導入。2010/08/26現在の最新バージョンは2.1.1です。 mkdir ~/tmp cd ~/tmp wget http://parallel-ssh.googlecode.com/files/pssh-2.1.1.tar
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く