リモート Web サーバー上のファイルを編集するための現在の解決策は、Fetch を使用してリモート マシンを参照し、TextWrangler を使用して編集を行うことです。しかし、リモート マシンでコマンド ラインをナビゲートすることに慣れてきたので (VIM を使用するのには十分ではありません...)、リモート マシンで 'open filename.txt' のようなものを入力できるようにしたいと考えています。ローカル マシンで TextWrangler を開きます。オプションとして「リバース トンネリング」という言葉が飛び交うのを聞いたことがありますが、次に何をすべきかわかりません。どんな提案でも大歓迎です-ありがとう!
6 に答える
個人的には、S/FTPブラウザとしてCyberduckを使用しています。Cyberduckの設定で、リモートファイルを編集するためのデフォルトのテキストエディタを定義できます。これで、ファイルを選択したときにCmd + Kを押すだけで、TextWranglerで開くことができます。保存するたびに、変更は自動的にリモートファイルに転送されます。
私は実際に同じことをしようとしていましたが、誰もそれを書いていなかったので、今日これを理解しました.
これには、2 つの必須部分と 3 つのオプション部分があります。
- 両方のコンピューターで ssh ログインを有効にする (必須)
- リモート マシンから自分のマシンへの ssh トンネルをセットアップする (必須)
- ssh トンネルのエイリアスを設定する (オプション)
- リモート マシンで TextWrangler のエイリアスを設定する (オプション)
- 毎回パスワードを入力する必要がないように ssh キーを設定する (オプション)
コマンドを実行するには、ローカルからリモートに ssh できる必要があり、コマンドを TextWrangler に送信できるように、リモートからローカルに ssh できる必要があります。
ssh トンネルを設定するには、ローカル マシンで次のようなコマンドを実行する必要があります。
ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]
-f フラグと -N フラグを指定すると、ssh がバックグラウンドになり、ユーザーはマシンに残されます。-R フラグは、リモート コンピューターのポートをローカル コンピューターのポートにバインドします。ポート 10022 でリモート マシンに接続するものはすべて、ローカル コンピューターのポート 22 に送信されます。リモート ポートは何でもかまいませんが、競合を避けるために 1024 より大きいポートを選択する必要があるため、root になる必要はありません。10022 を選択したのは、ssh のデフォルト ポート 22 に似ているためです。括弧をユーザー名とマシン名に置き換えます。
ログイン後に一度実行する必要があります。コマンドを自分で簡単に実行できるようにするために、bash プロファイルにエイリアスを追加できます。次を local に追加します~/.bash_profile
。
alias open-tunnel='ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]'
もちろん、好きなエイリアス名を選択できます。
トンネルを設定したら、リモート マシンで次のようなコマンドを使用できます。
ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]//absolute/path/to/file.txt"
-p フラグは、ポート 10022 (または以前に選択したポート) を使用するように指示します。これにより、リモート マシンがローカル マシンに接続し、インタラクティブな ssh セッションを開かずに二重引用符で囲まれたコマンドを実行します。引用符で囲まれたコマンドは、TextWrangler でリモート ファイルを開くためにローカル マシンで実行するコマンドです。
コマンドを自分で使いやすくするために、bash プロファイルに関数を追加できます。以下を remote に追加します~/.bash_profile
。
function edit { if [[ ${1:0:1} = "/" ]]; then abs_path="$1"; else abs_path="`pwd`/$1"; fi; ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]/$abs_path"; }
これは、リモート マシンに TextWrangler コマンド ライン ツールがインストールされていないことを前提としています。その場合は、関数に 以外の名前を付ける必要がありますedit
。たとえば、tw
. ここで${1:0:1}
は、関数の最初のパラメーターの最初の文字を調べます。これはファイル パスである必要があります。で始まらない場合は/
、現在の作業ディレクトリ ( pwd
) を先頭に追加して絶対パスを計算します。ここで、リモート マシンで/home/jdoe/some/directory/
を実行するedit some/other/directory/file.txt
と、ローカル マシンで次の処理が実行されます。
edit sftp://[username on remote machine]@[remote machine hostname]//home/jdoe/some/directory/some/other/directory/file.txt
最後に、毎回パスワードの入力を求められないように、双方向の ssh キーをセットアップする必要があります。これは他の誰かが書いたガイドです: http://pkeck.myweb.uga.edu/ssh/
これでコマンドラインから開くことができるとは思いませんが、
Remote-System-Explorerを備えたEclipseは、ssh 接続を介したファイルの編集もサポートしています。
あなたが言及しているのは、sshを介した「X11転送」と呼ばれていると思います。構成については、ssh_config(5) マンページを参照してください (または、'-X' パラメータを指定して 'ssh' を使用してください)。私の知る限り、これは X11 プログラム (gvim、xemacs など) でのみ機能します。これは、接続先のホストでエディターが実際に実行されているためです。ローカル マシンでは表示のみが行われます。したがって、TextWrangler は X11 プログラムではないため、オプションではありません。
リモート編集には Interarchy (nolobe 製) を使用しています。これはかなり高度な ftp/sftp クライアントであり、リモート ファイルのファインダー スタイルのビューを提供し、お気に入りのエディターを使用してそれらのファイルを操作できるようにします。
このようなプログラムにお金を払いたくない場合は、ミシガン大学から入手できる「Fugu」というオープンソース プログラムを使用することもできます。
FileZilla もこの機能を提供します。ここからダウンロードできます。sftp に接続したら、テキスト ファイルを右クリックして、任意のテキスト エディターで開くことができます。
最小限の答え
Applescript を使用できます。したがって、コマンドラインからこれを実行します。
osascript <<EOF
tell application "TextWrangler"
activate
open location {"sftp://myusername:@my.server:22222//home/username/.bashrc"}
end tell
EOF
ノート
- 呼び出しのたびにヒア ドキュメントを入力したくないのは明らかなので、このロジックを通常のシェル スクリプト内に配置することをお勧めします。
osascript <<EOF tell application "TextWrangler" activate open location {"$1"} end tell EOF
次に、次のようにスクリプトを呼び出します。
sh ~/bin/textwrangler.sh "sftp://myusername:@my.server:22222//home/username/.bashrc"
- ホスト修飾パスを指定するたびに面倒になる可能性があるため、スクリプトにハードコードするか、シェルを介してスクリプト呼び出しをキーストロークにバインドします。bash の場合:
bind '"\et":"sh ~/bin/textwrangler.sh \"sftp://myusername:@my.server:22222/\""'
を押して、コマンドの大部分を生成します。Alt-t