Bagaimana cara mengubah apa ssh: // digunakan?

9

Tampaknya ada dua versi klien SSH yang berbeda pada Macbook Pro saya yang menjalankan Sierra (10.12.4). Jika saya melakukan hal berikut:

$> ssh dev

Ini bekerja dengan baik. Namun, jika saya melakukan hal berikut:

$> open ssh://dev

Ini membuka terminal baru yang kemudian mengeluh tentang pengaturan enkripsi di ssh_configfile saya . Meneliti keluhan spesifik, saya menemukan bahwa pembukaan melalui pengendali protokol menggunakan versi SSH yang lebih lama.

Bagaimana cara mengubah klien SSH yang dialihkan ke protokol?

Joshua Gilman
sumber
1
Apa yang Anda dapatkan ketika Anda mengetik "yang ssh" dan apa yang Anda dapatkan ketika Anda mengetik "ps aux | grep ssh" setelah menjalankan perintah kedua?
Brethil
Yang ssh: /usr/local/bin/ssh Proses SSH membunuh dirinya sendiri setelah menjalankannya melalui metode kedua, saya tidak yakin bagaimana saya akan tetap hidup untuk melihatnya dalam daftar proses.
Joshua Gilman

Jawaban:

4

Anda dapat menggunakan alat yang sangat nyaman untuk mengubah aplikasi default untuk penangan URL tertentu.

Ubah skema URL ssh dengan RCDefaultApp

  1. Unduh RCDefaultApp Versi 2.1
  2. Pasang Panel Preferensi
  3. Buka System Preferences> Defaults Apps> URLs
  4. Pergi ke "ssh"
  5. Di sisi kanan, pilih aplikasi yang Anda inginkan

Ini akan terlihat sangat mirip dengan tangkapan layar ini:

RCDefaultApp Screenshot menampilkan panel preferensi

oa
sumber
Masalahnya bukan berdasarkan pada aplikasi terminal, melainkan biner SSH mana yang dipanggil. Saya dapat mengubah aplikasi untuk membuka iTerm bukan Terminal dan masalahnya masih berlanjut.
Joshua Gilman
1

Untuk menjawab pertanyaan Anda tentang mengubah ssh: // protokol klien,

Per https://superuser.com/a/548122/202319 , Anda dapat memodifikasi ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plistuntuk membuka aplikasi apa pun dengan pengenal terdaftar saat ssh: // atau URL lain ditemukan.

Ini bukan solusi yang sempurna, karena masih membutuhkan bundel aplikasi, atau akan menggunakan Terminal.app (yang sudah Anda lihat).

Tetapi, Anda harus dapat memperbaiki file .login atau .bashrc Anda sehingga shell Terminal.app default akan tetap menggunakan yang Anda inginkan ssh.

Kent
sumber
1
Bisakah Anda menguraikan .logindan .bashrcmengkonfigurasi perubahan? Masalahnya bukan aplikasi terminal mana yang sedang dibuka, tetapi biner SSH mana yang sedang dieksekusi. Memanggil sshdi dalam sesi terminal panggilan satu biner, tetapi memiliki terminal membuka koneksi melalui protokol memanggil biner SSH lainnya.
Joshua Gilman
0

Saya tidak punya mac untuk memeriksa tetapi dugaan saya adalah:

Mac hadir dengan ssh client / usr / bin / ssh

Anda menginstal versi yang lebih baru di / usr / local / bin / ssh

Anda dapat mencoba menghapus / usr / bin / ssh atau mengatur ulang urutan $ Path sehingga ia akan memilih / usr / local / bin / ssh terlebih dahulu

Michał Gąsior
sumber
Sayangnya Apple membunuh kemampuan untuk menyentuh barang di / usr / bin. Saya sudah mencoba mengatur ulang variabel PATH untuk meletakkan bin lokal saya dimuka, tetapi tampaknya ssh: // protokol secara eksplisit memanggil / usr / bin / ssh karena perubahan tidak berfungsi.
Joshua Gilman
Anda dapat jika Anda menonaktifkan SIP dalam mode pemulihan:csrutil disable
Michał Gąsior