もともとはコメントとして投稿しましたが、回答として少し具体化します。
OpenSSHにはいくつかのユーティリティが含まれていますが、そのうちの最も注目すべきものはssh
およびscp
です。ながらssh
のみ、リモートコンピュータに接続する(そしておそらくそのリモートコンピュータ上でコマンドを実行)し、OpenSSHの他の部分は、次のようなscp
わずかに異なる構文を有します。すべてがOpenSSHスイートの一部であるため、これらは多くのコードを共有している可能性があります。
ではscp
、トリプレット形式のリモートファイルをとして指定しますuser@host:remotefilename
。ここremotefilename
で、相対パスまたは絶対パスを指定できます。
ホスト部分がフォーム上にあることが許可されている場合host:port
、これは潜在的なあいまいさを作成します。標準ポートに接続するときにhost.example.comをjdoe@host.example.com:2222
参照する~jdoe/2222
か、またはファイルをまったく参照しない(またはさらに悪いことに~jdoe
)ポート2222経由で接続する場合のhost.example.com?
あなたが提示するURI構文は、それが表現できるものにより制限されており(ファイル名の指定は許可されていません)、さらに重要なことには、実際のホスト名に:
(私が考えていない)が含まれていない限り、あいまいさはあり得ませんDNSでさえ可能であり、確かに一般的に行われていませんが、すべて数値のファイル名はそれほど珍しいわけではありません)。
SSHが最初に開発されたとき、それは以前のRSH / rloginツールスイートのより安全なドロップイン代替として開発されました。そのためのコマンドライン構文が1990年代初頭に何であったかはわかりません(rloginを説明するRFCは、1991年12月のRFC 1282であり、引用したドキュメントの約15年前のものです)。ユーザー名がrloginプロトコルで特別に送信されたため、非常によく似た構文を使用したと思います。RFC 1282の引用:
接続が確立されると、クライアントはヌルで終了する4つの文字列をサーバーに送信します。1つ目は空の文字列(つまり、1つのゼロバイトのみで構成されます)で、その後に3つのnull以外の文字列が続きます:クライアントのユーザー名、サーバーのユーザー名、端末のタイプと速度。より明確に:...
ローカルのユーザー名はさまざまなシステム機能を通じて取得できますが、リモートのユーザー名は何らかの方法で明示的に指定する必要があります。脇から@
しばしば「で」ので、そもそもかなり自然な選択であると発音され、user@host
例えば電子メール送信(のSMTPアドレスを比較するために確立構文にうまくマッピングしuser@host
、host
MXレコードのポインティングと実際のホストまたはDNS名であり実際のホストに)、それで何か新しいものを作るよりもおそらく簡単な選択でした。
また、Stephane Chazelasがコメントで指摘したことに注目する価値もあります。あなたが参照する文書はRFCではなく、現在7年前の草案であり、Googleのクイック検索で確認すると、地面から離れたことがないようです。 。それは常に起こります。何かが提案されていますが、実際にそれをRFCにするためのサポートは得られません(さらに、多くの多くの RFCは非標準です)。
-p
代替ポートを伝達するには、スイッチを使用する必要があります。