nDiki : SSH

2013年3月1日 (金)

UnisonWindowsLinux で双方向ファイル同期 with Plink

Windows 上で作成・更新したファイルをサクッと Linux 上に反映させるのに、やっぱり Unison File Synchronizer を使うことにした。Windows 上の Unison から SSH 経由で Linux 上と同期させる構成ってしたことなかったな。ちょっと調べつつ設定。

Windows

Unison-2.40.102.zip をダウンロードしてきて C:\Uers\Naney\local\Unison-2.40.102 として展開。テキスト版(CLI 版)を使いやすいように unison.exe という名前に変える。

SSH 経由の接続については PuTTY についている Plink を使うことにした。OpenSSH とはちょっと違うので下記のようにバッチファイル C:\Uers\Naney\local\Unison-2.40.102\plinkunison.bat を作る。

 @c:\Users\Naney\local\PuTTY\plink.exe -l naney -ssh remote.example.com unison -server

同期先のホスト remote.example.com にアカウント naney で SSH 接続して unison をサーバとして起動するというバッチファイル。

次に Unison 同期設定を書いたプロファイルファイル c:\Users\Naney\.unison\test.prf を作る(テスト用)。内容は以下。

 root = c:\Users\Naney\unisontest
 root = ssh://naney@remote.example.com/home/naney/unisontest

 sshcmd=c:\Users\Naney\local\Unison-2.40.102\plinkunison.bat

 times = true
 fastcheck = yes

双方の unisontest ディレクトリを同期する設定になってる。

Linux

最新の OCaml (Unisonビルドに必要)と Unison を取ってくる。

 wget http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.1.tar.gz
 wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.102.tar.gz

あとは以前の インストール手順 と同じ流れでインストール。

実行

Windows のコマンドプロンプトから

 unison test

で同期できることを確認。

あとは実際の同期したいディレクトリのペアにあったプロファイルファイルを作っていけば OK。

[ 3月1日全て ]

2013年12月25日 (水)

Android 端末から SSH port forwarding 経由で IRC 接続する

AndroidSSH port forwarding アプリ

現時点で最新版が2010年10月7日アップデートの 1.7.1 とちょっと古いんだけれど、過去に使った経験がある SSH クライアントの ConnectBot を使う。

まずは「接続ホスト」の設定で port forwarding するホストへの SSH 接続できるように設定する。またあわせてその接続ホストのメニューから「ポート転送の編集」を選び「ポート転送の追加」で、

  • 鍵の名前: (空)
  • タイプ: ローカル
  • ソースポート: Android 端末上の適当なポート番号 (A)
  • 転送先: <SSH 接続先からみた IRC サーバホスト名>:<IRC サーバのポート番号>

を指定する。あとは ConnectBot で SSH 接続をすれば、別途 IRC クライアントアプリから 127.0.0.1 のポート番号 (A) に接続して IRC が使えるようになる。

AndroidIRC クライアント

とりあえず3つ試してみた。

  • 接続先は Tiarra
  • 40個弱チャネルに join している
  • IRC クライアントを接続すると、各チャネル毎に数十件過去ログを送る設定にしてある

この条件だと、有料だけれど Android IRC が一番良かったのでこれを使うことにする。


[ Android アプリレビュー ]

[ 12月25日全て ]

2013年12月27日 (金)

今日のさえずり: 亭主元気で留守がいい年内最終日を含意

[ 12月27日全て ]

2014年1月27日 (月)

USB メモリとかもう使わないけれど必要になったとか

USB メモリ (USB フラッシュメモリ)とかもうずっと使ってなくて。普通に Dropbox とか Evernote とか Google ドライブとか Bitbucket とか SSH + Unison で sync とかで済んじゃうので。

昔は買うときに速度なのなんなのでいろいろじっくり選んだりしていたものだけれどねぇ。今でも PC 間のファイルのやりとりでメジャーに使われているのだろうか?

今回は某楽器用に USB メモリ用意する必要があるということらしいので、新調しようかなと思うのだけれど、その用途以外には使わなさそうだし回数もあまり使わないんじゃないかと思うので、動作確認が取れているものから普通に安めのを選んで買おうと思う。

[ 1月27日全て ]

2014年2月11日 (火)

踏み台サーバ経由の SSH 接続設定

~/.ssh/config を設定する

ssh が -W オプションを使える場合:

 ForwardAgent yes

 Host <実際に入りたいホスト名>
  ProxyCommand ssh <踏み台でのユーザ名>@<踏み台ホスト名> -p <踏み台 SSH ポート番号> -W %h:%p

ssh の -W オプションではなく netcat を使う場合:

 ForwardAgent yes

 Host <実際に入りたいホスト名>
  ProxyCommand ssh <踏み台でのユーザ名>@<踏み台ホスト名> -p <踏み台 SSH ポート番号> nc -w 6000 %h %p

ssh-agent する

接続前に ssh-agent に秘密鍵を登録しておく。

 ssh-agent bash
 ssh-add ~/.ssh/<private-key>

自分は keychain を使っているので .profile で

 /usr/bin/keychain ~/.ssh/<private-key-1> ~/.ssh/<private-key-2> ...
 source ~/.keychain/${HOSTNAME}-sh

している。

接続する

  ssh <実際に入りたいホスト名>

~/.ssh/config で ForwardAgent を設定していなければ、

  ssh -A <実際に入りたいホスト名>

参考

[ 2月11日全て ]

2014年2月14日 (金)

KVIrc で IRC over SSH

今日は Android 端末で外出先から IRC over SSH でチェックしていた。去年末にチョイスして設定した ConnectBot + Android IRC で。

でふと家に帰ったら、そういえば Debian GNU/Linux 機からの IRC over SSH する設定作っていなかったので設定しておいた。

最近 Linux BOX で直接 IRC 見ていなかったんだけれど何がいいのかな。とりあえず久しぶりに Riece いれてみたけれど最初うまくつながらなくて(設定の :coding で utf-8 とするところを utf8 としていたのが原因)、つながったらつながったで Emacs がフル回転で重くて駄目だったので別のにすることにした。 Konversation を試してみたけれど、Tiarra に接続した時に Tiarra の Log::Recent が送ってくれる過去ログをうまく処理できないみたいなので自分の場合イマイチだった。別に試してみた KVIrc では大丈夫だったのでしばらくこれを使ってみることにした。

SSH port forwarding 設定の方は ~/.ssh/config で

 Host irc
   HostName <踏み台 SSH サーバ名>
   User <踏み台 SSH ユーザ名>
   Port <踏み台 SSH ポート番号>
   LocalForward 6667 <踏み台の向こうの IRC サーバ名>:6667

と書いておく。

ssh -f -N irc とすれば踏み台の向こうの IRC サーバ(あるいは Tiarra)にトンネルができるので、 127.0.0.1:6667 に KVIrc 他の IRC クライアントから接続すれば OK。

[ 2月14日全て ]

2014年3月1日 (土)

iOS デバイス用 IRC クライアントとして LimeChat をチョイス

お祭り IRC チャネルを家でチェックするのに PC に張りついているのもアレだ。 Xperia GX にインストールしてある Android IRC + ConnectBot でもチェックできるのだけれどこちらはバッテリ的に常時つけておくのもアレ。ということで iPod touch 5th にも IRC クライアントを入れておいて、こちらでモニタしておこうかなと。

IRC クライアントアプリは TwitterFacebookLimeChat を薦められたのでこちらをチョイス。Tiarra に接続した時の送られる過去ログもきちんとさばけた。

iOS だと IRC クライアントアプリとは別に SSH アプリを実行し続けておくのが難しいようなので、iOS デバイス上で SSH port forwarding するのはやめておいて、 PC 側で SSH port forwarding をゲートウェイとして立ち上げておいてそこを経由することにした。

PC 側では以下のような設定を ~/.ssh/config に追加。GatewayPorts を yes にしておくことで port forwarding を開いた PC 以外の端末からもポートにつなげられるようになる。

 Host ircgateway
   HostName <踏み台 SSH サーバ名>
   User <踏み台 SSH ユーザ名>
   Port <踏み台 SSH ポート番号>
   LocalForward 6668 <踏み台の向こうの IRC サーバ名>:6667
   GatewayPorts yes

PC 上で ssh -F -N ircgateway とすれば踏み台のむこうの IRC サーバ(あるいは Tiarra)にトンネルができるので、 <PC のアドレス>:6668 に iPod touch 5th 上の LimeChat から接続すれば OK。

今日のさえずり: お祭りにきました。 @ 株式会社ミクシィ

2014年03月01日

rimage:/nDiki/Flickr/12845589463.jpg

[ 3月1日全て ]

2014年3月5日 (水)

port forwarding 用に iOSSSH クライアント iSSH 入れたけれど、やはりバックラウンド10分制限の壁あり

この間 iOS デバイス用 IRC クライアントとして LimeChat入れたのだけれど、SSH port forwarding は別のホストに頼っていた(記事)。 でもやっぱり iOS デバイス内で SSH port forwarding もまかないたいと思い iSSH を入れてみた。

結論としては、やはり iOS マルチタスキングの制約によりバックグラウンドから10分でサスペンドになってしまい接続が切れてしまう。むむむ。まあストアで

Multitasking support - can hold connections open for up to 10 minutes

と書いてある通りではあるのだけれど。残り時間が近くなると通知でお知らせしてくれるので、再度フォアグラウンドにもってきて継続させることはできるのだけれど、手間だし、ずっと操作しているときはいいけれどその辺に置いておいてたまにウオッチするというのには向かない。あとアプリのせいではないけれど、メモリを使ような写真系アプリの起動とかしちゃうとあっさり止められちゃうのも悲しい。

あと、ポートフォワードしているローカルポートに LimeChat か接続しても「接続を試みます…」「接続しました」で止まってしまうことが多々ある。ちょっと原因不明だし不便。

SSH クライアントとしても「日本語が表示できない」「Active Connections 画面の Back ボタンが効かなくなることがある」「起動後 ssh-add までに必要なタップ数が多い」「ssh-add の後に落ちやすい」などもうちょっとお願いしますというところ。

緊急時にノート PCAndroid 端末もなくて、これで IRC チェックする必要がある時用ぐらいかなー。

[ 3月5日全て ]

2014年3月14日 (金)

今日のさえずり: Pageant って Pagent じゃなかった

[ 3月14日全て ]

2014年4月4日 (金)

tmux でペインでの作業をロギングしておく設定

ターミナルでの作業の内容をファイルに書き出しておきたいことがある。特に SSH で入ったリモートホスト上での作業内容を手間をかけずにローカルホスト上にもってきたいことがよくある。

tmux だと pipe-pane コマンドを使うと各ペインでの作業をパイプでコマンドに送っておけると教えてもらったので設定してみた。

パイプからの送り先のコマンドを用意する

cat でもいいのだけれど自分は日付別に保存したいので以下のようなシェルスクリプトを ~/.dotfiles/bin/log-tmux として作る。

 #!/bin/sh

 DATE=`date "+%Y-%m-%d"`
 LOG_DIR=$HOME/var/tmux/log/$DATE
 LOG_FILE=$LOG_DIR/tmux-$DATE-$1.log
 mkdir -p $LOG_DIR
 tmux display-message "Started logging to $LOG_FILE"
 cat >> $LOG_FILE

~/.tmux.conf にキーバインディングを設定する

~/.tmux.conf に以下を追加。

 #
 # logging
 #
 # C-t C-p (toggle)
 bind-key C-p pipe-pane -o '$HOME/.dotfiles/bin/log-tmux "#S-#I:#W-#P"'

これで prefix*1 + C-p をタイプすると

 ~/var/tmux/log/2014-04-04/tmux-2014-04-0-0:bash-0.log

みたいな感じでファイルが作られてそこに pane に出力された内容が書き出されはじめる。もういちど prefix + C-p すると停止。複数のペインで同時に別のファイルにロギングしておける(それぞれで prefix + C-p をタイプして開始させておく)。

ちなみに #S とかは以下。

  • #S: セッション名
  • #I: 現在のウインドウインデックス
  • #W: 現在のウインドウ名
  • #P: 現在のペインインデックス

保存されたファイルにはエスケープシーケンスなども含まれるので見る時は less -R や lv -c あたりを使うとみやすい。

*1自分は C-t

[ 4月4日全て ]

About

Process Time: 0.09197s / load averages: 0.29, 0.38, 0.43