Masalahnya 1.0
Saya sedang mengerjakan server yang hanya mendukung dua faktor auth (keypair auth dinonaktifkan). Jadi setiap kali klien SFTP saya ingin mengunggah file, ia meminta saya token ... setelah 3 menit itu menjadi UX not_very_nice.
Solusinya 1.0
Jadi saya belajar tentang multiplexing SSH dan sekarang saya dapat membuka satu koneksi master secara manual (dari terminal), dan semua koneksi ssh lainnya dapat di-multiplexing di atas, seperti:
$ ssh example_com_master
Verification code: (/me enters the token code)
Password: (/me enters my pass)
Welcome to Ubuntu 14.04 blah blah....
Last login: Wed Oct 1 11:24:15 2014 from 12.34.56.78
$
Kemudian, dari terminal lain, atau dengan perangkat lunak lain:
$ ssh my.example.com
Last login: Wed Oct 1 16:34:45 2014 from 12.34.56.78
$
Jadi, misi selesai, tidak ada lagi yang masuk token 2FA. Dan tidak ada kata sandi, dalam hal ini, SSH FTW!
~ / .ssh / config:
Host example_com_master
HostName my.example.com
User username
PubkeyAuthentication no
ControlMaster yes
ControlPath ~/.ssh/sockets/example_com
ControlPersist 10
Host my.example.com
HostName my.example.com
User username
PubkeyAuthentication no
ControlMaster no
ControlPath ~/.ssh/sockets/example_com
Masalah 2.0 (TLDR)
Beberapa perangkat lunak (misalnya PyCharm IDE) menggunakan perpustakaan / biner SSH mereka sendiri ! Berarti tidak ada yang saya ketikkan yang ~/.ssh/config
akan memengaruhinya, AFAIK.
Itu masalah saya saat ini: apakah ada cara untuk "mengelabui" perangkat lunak tersebut agar menggunakan koneksi master yang sudah ada?
Sebuah ide: karena Anda biasanya dapat mengkonfigurasi perangkat lunak untuk menggunakan port yang berbeda untuk terhubung, saya bertanya-tanya apakah mungkin untuk mengatur semacam tunneling yang akan multiplex koneksi masuk ke master yang ada. Tapi foo saya telah mengecewakan saya ...
edit:
Tujuan utamanya adalah untuk terhubung ke interpreter / debugger Python jarak jauh.
edit 2:
Semua port ditutup selain 22 dan 80. Namun, dimungkinkan untuk melakukan:
remote$ ssh localhost:2222
(password or securekey login, both work)
remote$
tetapi 2222 hanya terbuka untuk koneksi dari localhost, dan admin tidak akan membuka port tambahan, mengatakan "siapa pun bisa menggunakannya".
sumber
Jawaban:
Masalah yang cukup menarik.
Solusi sebenarnya adalah meminta bantuan sysadmin Anda terlebih dahulu.
Jika itu bukan pilihan, hal terbaik berikutnya adalah memiliki libssh pyCharm atau apa pun yang digunakannya (saya melakukan beberapa googling dan tidak bisa mengetahuinya) uraikan `~ / .ssh / config 'Anda.
Jika itu tidak memungkinkan, Anda mungkin dapat menjalankan daemon ssh Anda sendiri pada remote host mendengarkan pada alamat loopback dan menghubungkannya dengan forward lokal.
Untuk mengatur daemon ssh tidak privat (disalin dari tautan pada jawaban SF ):
Sekarang teruskan port lokal ke sana (Anda akan masuk dengan 2fa di sini):
Dan pyCharm langsung ke
localhost:2230
. Anda juga dapat mengatur keypair auth pada sshd kustom Anda.Perhatikan bahwa ini adalah kesalahan besar, dan sysadmin Anda mungkin tidak menghargainya.
Ada kemungkinan besar bahwa pyCharm sudah menggunakan OpenSSH untuk implementasi ssh-nya. Jika demikian, menambahkan dukungan multiplexing ke pyCharm akan jauh lebih mudah daripada solusi yang saya usulkan.
sumber
Match Address 127.0.0.1 PasswordAuthentication yes
Mungkin diikuti oleh satuMatch
baris sendiri untuk menutup bagian, jika Anda tidak menambahkan ini di akhir file.