私はリモート操作にSSHとSFTPを頻繁に使用します。後者は基本的にSSHを介して実行されるファイルコピープロトコルであり、これら2つのツールがまだ統合されていない理由が「誰もこれまでやりたくない」以外に他の理由があるかどうか疑問に思います。 「統合」とは、SSHモードをSFTPに変更し、同じセッションで再び戻す方法があることを意味します。たとえば、
SSHを使用してログインします。
$ ssh -i privkey [email protected]
Last login: Tue Nov 18 10:47:25 2014
-bash-4.1$ ls
cgi-bin error html icons manual
-bash-4.1$ cd html
-bash-4.1$ ls
index.html
-bash-4.1$ md5sum index.html
ad7c5e1ed76c2d4efd6613315b4d1411
index.htmlを置き換えたいので、魔法のキーボードの組み合わせを適用してモードを切り替えます。
sftp> put index.html
SSHモードに戻るには、別のキーボードの組み合わせを使用してください。
-bash-4.1$ md5sum index.html
dd208743fa38dd55ec21c1ed75fa035c
非常に実用的で、コピーして貼り付けたり、2つのセッションを開く必要はありません。これを達成するには、SSHプロトコルを大幅に変更する必要がありますか?
答え1
以前のバージョンと互換性があります!
ftpは1971年から何らかの形で存在してきました。これは1980年に標準IPファイル転送プロトコルになりました。 「sftp」は、単にネットワーク経由でデータを転送するときに暗号化を使用するftpプロトコルですが、それ以外は「ftp」プロトコルと同じです。これにより、何百万もの既存のスクリプトとプロセスが最小限の変更で強化されたセキュリティを活用できます。
ssh - セキュアシェルプロトコルは、セキュアネットワークを介してシェルコマンドを実行するように設計されています。 sshに付属のさまざまなネットワークユーティリティコマンドは、シェルスクリプトになじみのあるBourneシェルコマンドをモデル化しているため、「scp」構文はおおよそunixの「cp」構文に基づいています。
答え2
すべてのFTPセッションメカニズム、別々のデータと反対方向の制御接続、現在のディレクトリなどは、SSH内で実装するのが難しく意味がないと言いたいと思います。レプリケーションは単に接続を再利用することも、実際には反対側の端でシェルを実行している場合もあります(常にそうではありません)。
ファイルをすばやくコピーするには、既存の接続を再利用できます。 OpenSSHを使用しているとします。
通常のSSH接続を確立してファイルをコピーする必要がある場合は、別のターミナルwindow / tmux window / ttyを使用してコマンドを実行してくださいscp
。
これを設定するとControlMaster
(グローバルまたは特定のホストグループに対して)既存の~/.ssh/config
接続scp
が再利用され、パスワードの入力を求められず、再接続に時間を浪費しません。
唯一の問題は、scp
既存のセッションに接続されず、シェルの現在のディレクトリを再利用しないことです。しかし、これは常に可能なわけではありません。リモートシェルがすでに別のプロセス(tmux
など)mc
を実行しているとします。tail -f
したがって、完全に書く必要がありますscp index.html hemote.host:path/to/www/
。通常、リモートウィンドウからパスをコピーすることは難しくありません。
残念ながら、~Ctrl+ZORは~&多重化セッションでは機能しないため、以前のVT-220を使用している場合はtmux
ORを事前に実行する必要がありますscreen
。
他のデータ転送モデルにも同様に適用またはサポートされますが、rsync
接続sshfs
を共有することもできます。sftp