Saya mencoba ssh ke server jauh saya di dalam Windows 10 Linux Subsystem. Saya menggunakan MS Windows 10 Home Insider Preview build 14366.
Saat berada di command prompt, saya mengetik:
Beberapa detik setelah mengetik perintah ssh, saya mendapatkan pesan berikut:
ssh: terhubung ke host domain.com port 22: Sumber daya tidak tersedia untuk sementara
Saya berhasil dapat terhubung menggunakan Putty serta menggunakan ssh dalam Git Bash.
Jadi, itu membuat saya percaya bahwa masalahnya ada di komputer lokal saya dan lebih khusus di dalam Subsistem Linux. Saya masih sangat hijau dengan lingkungan Linux dan saya tidak yakin bagaimana menafsirkan pesan ini. Sumber daya apa yang tidak tersedia dan apa yang harus saya lakukan untuk membuatnya tersedia?
windows-10
bash
ssh
kell
sumber
sumber
git
danapt-get
Jawaban:
Sejauh yang saya tahu, ini adalah bug di WSL. Semoga Microsoft akan memperbaikinya di build berikutnya. Tapi untuk sekarang, kita bisa menggunakan hack yang sedikit jelek ini.
Pembaruan # 1 : Pasti bug. Menemukan masalah ini di Github. Solusi yang diusulkan mereka meluncurkan kembali shell bekerja untuk saya juga jika Anda tidak ingin melalui semua ini.
TL; DR Tambahkan ini ke AKHIR konfigurasi SSH Anda (biasanya berlokasi di
~/.ssh/config
):Inilah mengapa ini bekerja: Masalah SSH kami bukan masalah firewall karena
nc
dantelnet
bekerja untuk host dan port yang sama (cobatelnet <host> <port>
ataunc <host> <port>
: Anda akan melihat sesuatu sepertiSSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7
). Ini bisa kita gunakan untuk keuntungan kita.SSH memungkinkan penggunaan proxy yang mengambil input standar dan mengirimkannya ke port server melalui
ProxyCommand
opsi. Ini biasanya digunakan untuk tunnel ke jaringan ke host yang dilindungi dengan menggunakan server SSH bastion di antara, kadang-kadang disebut host melompat (lihat tautan ini untuk info lebih lanjut).Peretasan ini memberi tahu SSH untuk menggunakan proxy tanpa host lompat. Jadi, ini mengatasi kegagalan alokasi sumber daya TCP oleh SSH dengan mendorong semua alokasi sumber daya jaringan ke Netcat, yang berfungsi. SSH hanya melakukan hal SSH tanpa koneksi jaringan, dan Netcat mengirimkan data mentah melalui koneksi TCP ke server SSH.
PERINGATAN: Karena ini memodifikasiProxyCommand
untuk semua host, saya tidak tahu bagaimana berinteraksi dengan host konfigurasi SSH lain yang menggunakanProxyCommand
. Saya memiliki beberapa server yang dapat digunakan untuk menguji ini, dan saya akan memperbarui jawaban ini dengan hasilnya. Ada kemungkinan tidak ada efek samping yang merugikan, tetapi saya tidak bisa menjamin itu.Pembaruan # 2: Saya melakukan beberapa pengujian dengan beberapa server saya, dan ini tampaknya berhasil. SSH menggunakan entri paling atas dalam konfigurasi ketika beberapa entri berlaku. Jadi,
ProxyCommand
hadiah yang ada di atas peretasan ini akan menimpanya. Ketika perintah SSH baru dieksekusi, ia membaca kembali konfigurasi SSH, dan jika tidak ada yang lainProxyCommand
, SSH menggunakan peretasan kamiProxyCommand
, yang memungkinkannya hanya berlaku untuk sesi SSH "terluar". Kata peringatan: jika Anda meletakkan retasan di bagian atas file konfigurasi (atau di atas entri yang Anda coba SSH), sesi SSH yang memerlukanProxyCommand
wasiat akan mengabaikan yang lainProxyCommand
dan alih-alih mencoba menyelesaikan alamat host dan terhubung langsung dengan Netcat.sumber
vi ~/.ssh/config
yang membuka file kosong. Saya menyisipkan perintah Anda tetapi ketika saya mencoba untuk menyimpan (esc ->: -> wq) ia memberi tahu saya"~/.ssh/config" E212: Cannot open file for writing
ls -al ~/.ssh
?Ini juga masalah bagi saya, ternyata itu adalah firewall saya (Symantec) yang memblokir semua lalu lintas internet dari bash.
Tampaknya ini adalah masalah umum dengan penyedia firewall pihak ke-3 yang tidak mengenali prosesnya:
https://github.com/Microsoft/BashOnWindows/issues/809
Ketika saya menonaktifkan firewall saya, itu berfungsi dengan baik. Tidak dapat menemukan solusi yang lebih baik saat ini.
sumber
Dalam kasus saya, saya mendapatkan kesalahan ini karena pembaruan windows menyebabkan masalah dengan saklar Hyper-V saya . Ternyata tuan rumah yang saya coba ssh untuk terhubung ke saklar itu - memperbaikinya dipulihkan ssh.
sumber
Untuk referensi di masa mendatang, ketika Anda menginstal Nginx, itu akan memblokir SSH secara default dengan pesan kesalahan "Sumberdaya sementara tidak tersedia" kecuali jika Anda ...
sumber