sshコマンドがURIのRFCに従っていないのはなぜですか?


9

RFC:

SSH URIは次のように表示されます。

ssh://[<user>[;fingerprint=<host-key fingerprint>]@]<host>[:<port>]

OpenSSH sshコマンドがホスト名オプションを使用してこの標準に従っていない理由は何ですか?コロンの後のポートは受け付けません。

機能すると期待していたURIの例:

$ ssh user@host:2222
ssh: Could not resolve hostname host:2222: Name or service not known

@MichaelKjörlingは正しいと思います。コロンは、ホスト名が停止し、そのホストでパスが開始する境界です。-p代替ポートを伝達するには、スイッチを使用する必要があります。
slm

6
これはRFCではありません。2006
StéphaneChazelas

rfc3986の方が引用するのが適切であったことに同意します。
Tomasz Wasiluk 2013年

回答:


5

sshより一般的なURIフォーマット(1998)よりも数年前(1995 IIRC)に先行しています。


それで、1994年12月に公開されたRFC 1738のドラフトがOpenSSH開発に影響を与えなかったと言っているのですか?OpenSSHはOpenBSD 2.6で初めて登場し、最初のポータブルリリースはWikipediaに続いて1999年10月に作成されました。ssh.comツールとの互換性が必要でない限り?
Tomasz Wasiluk 2013年

RFC 1738はURL用であり、私の記憶ではあまり一般的な形式ではなく、後でURIで一般化されました。opensshはsshよりもずっと新しいですが、移行したことを覚えていないため、コマンドライン互換性が大幅に高い可能性があります。
Anthon

14

もともとはコメントとして投稿しましたが、回答として少し具体化します。

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@hosthostMXレコードのポインティングと実際のホストまたはDNS名であり実際のホストに)、それで何か新しいものを作るよりもおそらく簡単な選択でした。

また、Stephane Chazelasがコメントで指摘したことに注目する価値もあります。あなたが参照する文書はRFCではなく、現在7年前の草案であり、Googleのクイック検索で確認すると、地面から離れたことがないようです。 。それは常に起こります。何かが提案されていますが、実際にそれをRFCにするためのサポートは得られません(さらに、多くの多くの RFCは非標準です)。


1
私の質問は「なぜOpenSSHユーティリティが一般的なURI標準に準拠していないのですか?」私はあなたの洞察に感謝しますが、それは私の質問に答えませんでした。
Tomasz Wasiluk 2013年

+1の歴史的視点は、標準の混沌とし​​た海を図表化するのに役立ちます
msw 2013

「多くのRFCは非標準である」というコメントを拡大すると、これは真実から離れることはできません。RFCの本質は「コメントの要求」です。これは単なる情報です。これは、メモ、メモ、またはドキュメントです。RFCは公開されたメモにすぎません。RFCは、RFCの唯一の目的ではありませんが、標準ドキュメントが公開される多くの方法の1つにすぎません。標準はRFCを介して文書化される場合がありますが、RFCは特定の標準の文書化とは限りません。バナナは果物ですが、すべての果物がバナナであるとは限りません。
回転
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.