RFC:
menyajikan SSH URI sebagai:
ssh://[<user>[;fingerprint=<host-key fingerprint>]@]<host>[:<port>]
Adakah alasan yang diketahui mengapa perintah OpenSSH ssh tidak mengikuti standar ini dengan opsi hostname? Itu tidak menerima port setelah titik dua.
Contoh URI yang saya harapkan untuk bekerja:
$ ssh user@host:2222
ssh: Could not resolve hostname host:2222: Name or service not known
-p
sakelar untuk menyampaikan port alternatif.Jawaban:
ssh
mendahului format URI yang lebih umum ( 1998 ) beberapa tahun (1995 IIRC).sumber
Saya awalnya memposting ini sebagai komentar, tetapi akan menyempurnakannya sebagai jawaban.
OpenSSH berisi beberapa utilitas, di antara yang paling terkenal adalah
ssh
danscp
. Meskipunssh
hanya akan terhubung ke komputer jarak jauh (dan mungkin menjalankan perintah pada komputer jarak jauh itu), bagian lain dari OpenSSH sepertiscp
memiliki sintaks yang sedikit berbeda. Berdasarkan semua yang menjadi bagian dari paket OpenSSH, ini kemungkinan berbagi banyak kode.Dengan
scp
, Anda menentukan file jarak jauh pada formulir triplet sebagaiuser@host:remotefilename
, di manaremotefilename
mungkin jalur relatif atau absolut.Jika bagian host diizinkan berada di formulir
host:port
, ini akan menciptakan ambiguitas potensial:[email protected]:2222
merujuk~jdoe/2222
pada host.example.com saat menyambungkan pada port standar, atau apakah itu merujuk pada tidak ada file sama sekali (atau lebih buruk,~jdoe
) pada host.example.com saat menghubungkan melalui port 2222?Sintaks URI yang Anda sajikan lebih terbatas pada apa yang dapat diungkapkannya (tidak mengizinkan spesifikasi nama file), dan bahkan yang lebih penting, tidak akan pernah ada ambiguitas kecuali nama host sebenarnya mencakup a
:
(yang saya pikir tidak bahkan mungkin dalam DNS, dan tentu saja tidak umum dilakukan, sedangkan nama file semua-numerik tidak terlalu biasa).Ketika SSH awalnya dikembangkan , SSH dikembangkan sebagai pengganti drop-in yang lebih aman untuk rangkaian alat RSH / rlogin sebelumnya. Saya tidak tahu apa sintaks baris perintah untuk itu kembali pada awal 1990-an (RFC menggambarkan rlogin adalah RFC 1282 dari Desember 1991 , mendahului dokumen yang Anda kutip sekitar 15 tahun), tetapi sepertinya itu tidak masuk akal. tebak itu menggunakan sintaks yang sangat mirip karena nama pengguna ditransmisikan secara khusus dalam protokol rlogin. Mengutip RFC 1282:
Username lokal dapat diperoleh melalui berbagai fasilitas sistem, tetapi nama pengguna terpencil harus ditentukan secara eksplisit entah bagaimana . Selain
@
sering diucapkan "at" dan dengan demikian menjadi pilihan yang cukup alami untuk memulainya,user@host
memetakan dengan baik sintaksis yang mapan untuk misalnya pengiriman email (bandingkan alamat SMTPuser@host
, di manahost
mungkin merupakan host aktual atau nama DNS dengan MX record pointing) ke host sebenarnya), jadi itu mungkin pilihan yang mudah daripada membuat sesuatu yang baru.Juga patut dicatat apa yang ditunjukkan Stephane Chazelas dalam sebuah komentar : dokumen yang Anda maksud bukanlah RFC, itu konsep yang saat ini berusia tujuh tahun yang, dilihat dari pencarian cepat Google untuk mengonfirmasi, tampaknya tidak pernah berhasil. . Itu terjadi sepanjang waktu; sesuatu diusulkan, tetapi tidak mengumpulkan dukungan untuk benar-benar membuatnya menjadi RFC (dan bahkan banyak, banyak RFC adalah non-standar).
sumber